アプリ版:「スタンプのみでお礼する」機能のリリースについて

Java3Dを使ってサーフボードを作ってみようと思っているのですが、初歩中の初歩からつまずいています。public BranchGroup createSceneGraph()の中に以下のようなコードを書いたのですが、load test can't be instantiatedと出ます(testはアプレットの名前です)。そもそもこのエラーがどのような物なのかも分からないのですが、以下のコードのどこがおかしいのか教えてください。お願いします。

//createSceneGraph()の一部
Point3d[] vertices = new Point3d[400];
double step = (1 - (-1)) / 400;
int i = 0;
for(double x= -1; x < 1; x += step){
  // x座標が x と x+step の間を計算して線分で結
  vertices[i] = new Point3d(x, f(x), 0.0);
  vertices[1+1] = new Point3d(x + step, f(x+step), 0.0);
  i += 2;
}

double f(double x){
  return a*x*x + b*x + c;
}

A 回答 (1件)

load test can't be instantiated(testをインスタンス化できない)と出ているので、このコード内にエラーメッセージの原因があるとは思えないのですが、とりあえず、お書きになられたコードで修正すべき点を上げておきます。



double step = (1 - (-1)) / 400;
↓整数型と浮動小数点型はしっかり区別。
double step = (1.0 - (-1.0)) / 400.0;

変数iとの兼ね合いもあるため、ループカウンタに浮動小数点型はお勧めできません。
修正例)
double x = -1.0;
int i = 0;
while (i < 400) {
  vertices[i] = new Point3d(x, f(x), 0.0);
  i++;
  x += step;
  vertices[i] = new Point3d(x, f(x), 0.0);
  i++;
}
↑元のコードをそのまま修正したものです。(ループカウンタをxからiにしました)
↓でもループの中はこっちのほうが正しいような気がします。
while (i < 400) {
  vertices[i] = new Point3d(x, f(x), 0.0);
  i++;
  x += step;
}

この回答への補足

UKYのおっしゃるとおり、エラーの原因はこのロープの部分ではなく、コンストラクターにpublicを付け忘れてたせいでした。エラーはなくなったのですが、何も表示されないんです。どのような原因が考えられるのでしょうか?

補足日時:2002/04/04 12:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!