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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Q&A

2回答

251閲覧

Javaでエラーが出た

aiueoaiueoaiue

総合スコア94

Java

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

0グッド

0クリップ

投稿2017/11/11 14:18

編集2017/11/14 07:21

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

#エラーメッセージ
Test.java:17: エラー: class、interfaceまたはenumがありません
public QuadCurve2D.Double(double x1, double y1, double ctrlx, double ctrly, double x2, double y2){}
#追記
試しに別のソースも書きましたがエラーが出てよくわかりません。

Java

1import java.applet.Applet; 2import java.awt.Graphics; 3import java.awt.Color; 4import java.awt.Dimension; 5import java.lang.Object; 6import java.awt.geom.QuadCurve2D; 7import java.awt.geom.QuadCurve2D.Double; 8import javax.swing.*; 9import java.awt.Graphics2D; 10import java.awt.RenderingHints; 11import java.awt.geom.*; 12 13/* 14<applet code="Test1.class" width="1920" height="1080"> 15</applet> 16*/ 17 18import java.applet.* ; 19import java.awt.* ; 20 21 22public class Test1 extends Applet { 23 24 public void paint(Graphics g) { 25 QuadCurve2D.Double curve = new QuadCurve2D.Double(); 26 curve.setCurve(60.0d, 20.0d, 40.0d, 140.0d, 220.0d, 120.0d); 27 double x1 = curve.x1; 28 double y1 = curve.y1; 29 double x2 = curve.x2; 30 double y2 = curve.y2; 31 double ctrlx = curve.ctrlx; 32 double ctrly = curve.ctrly; 33 g.draw(new Ellipse2D.Double(x1 - 5.0d, y1 - 5.d, 10.d, 10.0d)); 34 } 35}

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/11/11 15:08

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

2017/11/11 15:16

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

2017/11/11 15:20

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

2017/11/11 15:27

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

回答2

0

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

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


java

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

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

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

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

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

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

投稿2017/11/11 17:30

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueoaiueoaiue

2017/11/12 14:53

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

2017/11/12 14:54

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

2017/11/12 14:57

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

2017/11/12 15:16

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

2017/11/12 15:22

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

2017/11/12 15:30

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

2017/11/12 15:32

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

2017/11/12 15:40

そうですが、今は本文で言った「ガチャガチャ動かしているうちに、分からないまま動く」状態です。 なるべく、コードを実行する前に挙動を予想して、外れたらその理由を考え、 仕様(ここでは数学)の理解と、コードの理解を一致させるのを目指して欲しいです。 この両者が一致すると、プログラミングの力が飛躍的に伸びるでしょう。
guest

0

QuadCurve2D.Double

くらいかしら?

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

java

1/* 指定されたdouble座標からQuadCurve2Dを構築および初期化します。 2 * パラメータ: 3 * x1 - 始点のX座標 4 * y1 - 始点のY座標 5 * ctrlx - 制御点のX座標 6 * ctrly - 制御点のY座標 7 * x2 - 終点のX座標 8 * y2 - 終点のY座標 9 * 導入されたバージョン:1.2 10 * 11 */ 12public QuadCurve2D.Double(double x1, 13 double y1, 14 double ctrlx, 15 double ctrly, 16 double x2, 17 double y2) 18

投稿2017/11/12 03:10

編集2017/11/12 13:15
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueoaiueoaiue

2017/11/12 12:59

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

退会済みユーザー

2017/11/12 13:16

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

2017/11/12 13:20

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問