質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.60%

  • Java

    13503questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Javaでエラーが出た

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 268

aiueoaiueoaiue

score 71

Javaでエラーが出てしまったので直したい

エラーメッセージ

Test.java:17: エラー: class、interfaceまたはenumがありません
public QuadCurve2D.Double(double x1, double y1, double ctrlx, double ctrly, double x2, double y2){}

追記

試しに別のソースも書きましたがエラーが出てよくわかりません。

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Dimension;
import java.lang.Object;
import java.awt.geom.QuadCurve2D;
import java.awt.geom.QuadCurve2D.Double;
import javax.swing.*;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.*;

/*
<applet code="Test1.class" width="1920" height="1080">
</applet>
*/

import java.applet.* ;
import java.awt.* ;


public class Test1 extends Applet {

  public void paint(Graphics g) { 
    QuadCurve2D.Double curve = new QuadCurve2D.Double();
        curve.setCurve(60.0d, 20.0d, 40.0d, 140.0d, 220.0d, 120.0d);
    double x1 = curve.x1;
       double y1 = curve.y1;
        double x2 = curve.x2;
        double y2 = curve.y2;
        double ctrlx = curve.ctrlx;
        double ctrly = curve.ctrly;
    g.draw(new Ellipse2D.Double(x1 - 5.0d, y1 - 5.d, 10.d, 10.0d));
  }
}

エラーメッセージ

エラー: シンボルを見つけられません
g.draw(new Ellipse2D.Double(x1 - 5.0d, y1 - 5.d, 10.d, 10.0d));
^
シンボル:   メソッド draw(Double)
場所: タイプGraphicsの変数 g

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • swordone

    2017/11/12 00:08

    どういう軌道を描こうとしているのですか?円弧の軌道かと思いきや0や90の時は直線でいい?

    キャンセル

  • aiueoaiueoaiue

    2017/11/12 00:16

    0や90というのは車のカーブするときの角度です。スタート地点から0度カーブしてもそれはカーブしてないのと同じなので直線でいいと思いました。90度は真横に相当するので曲線を描けないと思って直線でいいと思いました。

    キャンセル

  • swordone

    2017/11/12 00:20

    「車のカーブするときの角度」どこの何の角度ですか?これでは読み取れません。

    キャンセル

  • aiueoaiueoaiue

    2017/11/12 00:27

    90度の時も曲線で表せるなら曲線でよいです。

    キャンセル

回答 2

+4

どの様に変更すれば角度依存で曲線を描けるでしょうか?

「う~ん、惜しいですねえ……」(相棒風)。
質問の時点で、すでに半分答えが出ているようなものなのですが……。


      x = (int)( hankei * a* Math.cos(Math.toRadians(90)) ) ;
      y = (int)( hankei * a* Math.sin(Math.toRadians(90)) ) ;

曲線を表すのに、三角関数を使う、という発想自体は合っています。
しかしこれは、三角関数の仕組みを理解していないまま書いていますね。

そもそも、角度が変わらないのであれば、ループ中に三角関数は同じ値を返し続けます。
(数学)関数ですから、入力が同じなら同じ値を返します。今回は90に対応する値を。

三角関数に対する入力と、ループ中に変化する変数が結びついていません。
曲線が描けるのは、XとYがどう変化していくからなのか、
正しくイメージできていれば、パッと見で違和感を覚えるでしょう。

今回、コーディングテクニックの問題ではなくて、数学を理解しているかどうかという問題です。
まあガチャガチャ動かしているうちに、分からないまま動くこともあるんですが、それは筋が悪いです。
せっかく数学を使っているプログラムなんですから、三角関数を使う意味を考えてみましょう。

とにかく早く答えが欲しい気持ちも分かりますが、ウサギとカメ、急がば回れで線も回ります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/12 23:53

    三角関数に対する入力とループ中に変化する変数ってどこのことですか?

    キャンセル

  • 2017/11/12 23:54

    sin、cosの中を最初はaにしてたんですがそれでは角度依存にはなりませんでした。

    キャンセル

  • 2017/11/12 23:57

    >三角関数に対する入力 が引用した「Math.cos()」「Math.sin()」の括弧の中で、
    >ループ中に変化する変数 が「for」文の変数「t」です。

    キャンセル

  • 2017/11/13 00:16

    >sin、cosの中を最初はaにしてた
    aはtを180で割ってるため小さくなりすぎて、変化が現れてないんでしょう。
    とりあえず、sin、cosの中に直接tを入れてみてください。

    キャンセル

  • 2017/11/13 00:22

    直接tを入れるとなんかすごいことになりました。

    キャンセル

  • 2017/11/13 00:30

    これで、とりあえず角度は反映されて、直線だったのが曲線(点?)に前進しましたよね。
    いろいろな数値を入れて、三角関数の挙動を観察したり、もう少し試行錯誤してみて欲しいです。

    キャンセル

  • 2017/11/13 00:32

    いろいろな数値はsin、cosの中に入れるのですか?

    キャンセル

  • 2017/11/13 00:40

    そうですが、今は本文で言った「ガチャガチャ動かしているうちに、分からないまま動く」状態です。

    なるべく、コードを実行する前に挙動を予想して、外れたらその理由を考え、
    仕様(ここでは数学)の理解と、コードの理解を一致させるのを目指して欲しいです。
    この両者が一致すると、プログラミングの力が飛躍的に伸びるでしょう。

    キャンセル

+1

QuadCurve2D.Double

くらいかしら?

車のカーブは正円ではないのだけどね

/* 指定されたdouble座標からQuadCurve2Dを構築および初期化します。
 * パラメータ:
 * x1 - 始点のX座標
 * y1 - 始点のY座標
 * ctrlx - 制御点のX座標
 * ctrly - 制御点のY座標
 * x2 - 終点のX座標
 * y2 - 終点のY座標
 * 導入されたバージョン:1.2
 * 
 */
public QuadCurve2D.Double(double x1,
              double y1,
              double ctrlx,
              double ctrly,
              double x2,
              double y2)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/12 21:59

    試しに入れてみたところエラーが出ました。
    : class、interfaceまたはenumがありませんと表示されました。調べてみたらこのエラーは[]の数が合ってないと出るとありました。しかし[]の数は一致してました。これはどうすればいいでしょうか?

    キャンセル

  • 2017/11/12 22:16

    ちょっと回答のコンストラクタが別のクラスと誤解しそうだったので修正しました。

    キャンセル

  • 2017/11/12 22:20

    新しく入力してみてもエラーが変わりませんでした。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13503questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。