ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

JavaScriptで、nのm乗根を求めるにはどうすればいいのでしょうか。mが小数でもいいような場合が知りたいのですが。

よろしくお願いします。

A 回答 (1件)

Math.pow(n,1/m)



※m乗根=(1/m)乗
    • good
    • 1

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

Q時間帯判定をする。

質問です。

開始時刻 09:00:00
終了時刻 22:00:00

という前提で、

現在時刻を

String nowtime =
DateFormat.getTimeInstance(DateFormat.MEDIUM).format(now);
//hh:mm:ssという形式で取得し、

現在時刻が9:00:00から22:00:00
までならば、有効時間帯で、それ以外は、無効としようとしています。

if(9:00:00~22:00:00){
 System.out.println("有効時間帯");
 return true;
}
return false;

 そこで、if文内の判定方法なのですが、
 良い方法がありましたら、
 お教え願えませんでしょうか?

 よろしくお願いします。

Aベストアンサー

> if(9:00:00~22:00:00){

if (nowtime.compareTo("09:00:00") >= 0 && nowtime.compareTo("22:00:00") <= 0) {

かな。

Qjavascriptで結果表示テキストフィールドにInfinityやNaNを表示させない方法はありますか?

テキストフィールドに合計ともう1つの合計を
わるのですが、合計/合計とした場合、
最初の合計が0/3となっていると、Infinityと表示し、
空白/3となると、NaNを表示します。
表示させない方法はありますか?
教えて下さい。

Aベストアンサー

 isNaN() という関数があるので、それで不正な数値かどうかチェックできます。

 また、数値オブジェクトは Number.POSITIVE_INFINITY と Number.NEGATIVE_INFINITY という2つのシステム変数を使ってチェックできます。

 つまり、たとえばテキストフィールドの名前が TEST1 だった場合、

 obj = document.all;
 num = obj.TEST1.value-0;
 if ( isNaN(num) ||
    num = Number.POSITIVE_INFINITY ||
    num = Number.NEGATIVE_INFINITY ) ) obj.TEST1.value="";

 というプログラムによって、不正な数値を "" にすることができます。

Q統計学的に信頼できるサンプル数って?

統計の「と」の字も理解していない者ですが、
よく「統計学的に信頼できるサンプル数」っていいますよね。

あれって「この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる」という決まりがあるものなのでしょうか?
また、その標本数はどのように算定され、どのような評価基準をもって客観的に信頼できると判断できるのでしょうか?
たとえば、99人の専門家が信頼できると言い、1人がまだこの数では信頼できないと言った場合は信頼できるサンプル数と言えるのでしょうか?

わかりやすく教えていただけると幸いです。

Aベストアンサー

> この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる・・・
 調べたいどの集団でも、ある一定数以上なら信頼できるというような決まりはありません。
 何かサンプルを集め、それをなんかの傾向があるかどうかという仮説を検証するために統計学的検定を行って、仮設が否定されるかされないかを調べる中で、どの検定方法を使うかで、最低限必要なサンプル数というのはあります。また、集めたサンプルを何か基準とすべき別のサンプルと比べる検定して、基準のサンプルと統計上差を出すに必要なサンプル数は、比べる検定手法により計算できるものもあります。
 最低限必要なサンプル数ということでは、例えば、ある集団から、ある条件で抽出したサンプルと、条件付けをしないで抽出したサンプル(比べるための基準となるサンプル)を比較するときに、そのサンプルの分布が正規分布(正規分布解説:身長を5cmきざみでグループ分けし、低いグループから順に並べたときに、日本人男子の身長なら170cm前後のグループの人数が最も多く、それよりも高い人のグループと低い人のグループの人数は、170cmのグループから離れるほど人数が減ってくるような集団の分布様式)でない分布形態で、しかし分布の形は双方とも同じような場合「Wilcoxon符号順位検定」という検定手法で検定することができますが、この検定手法は、サンプルデータに同じ値を含まずに最低6つのサンプル数が必要になります。それ以下では、いくらデータに差があるように見えても検定で差を検出できません。
 また、統計上差を出すのに必要なサンプル数の例では、A国とB国のそれぞれの成人男子の身長サンプルがともに正規分布、または正規分布と仮定した場合に「t検定」という検定手法で検定することができますが、このときにはその分布を差がないのにあると間違える確率と、差があるのにないと間違える確率の許容値を自分で決めた上で、そのサンプルの分布の値のばらつき具合から、計算して求めることができます。ただし、その計算は、現実に集めたそれぞれのサンプル間で生じた平均値の差や分布のばらつき具合(分散値)、どのくらいの程度で判定を間違える可能性がどこまで許されるかなどの条件から、サンプル間で差があると認められるために必要なサンプル数ですから、まったく同じデータを集めた場合でない限り、計算上算出された(差を出すために)必要なサンプル数だけサンプルデータを集めれば、差があると判定されます(すなわち、サンプルを無制限に集めることができれば、だいたい差が出るという判定となる)。よって、集めるサンプルの種類により、計算上出された(差を出すために)必要なサンプル数が現実的に妥当なものか、そうでないのかを、最終的には人間が判断することになります。

 具体的に例示してみましょう。
 ある集団からランダムに集めたデータが15,12,18,12,22,13,21,12,17,15,19、もう一方のデータが22,21,25,24,24,18,18,26,21,27,25としましょう。一見すると後者のほうが値が大きく、前者と差があるように見えます。そこで、差を検定するために、t検定を行います。結果として計算上差があり、前者と後者は計算上差がないのにあると間違えて判断する可能性の許容値(有意確率)何%の確率で差があるといえます。常識的に考えても、これだけのサンプル数で差があると計算されたのだから、差があると判断しても差し支えないだろうと判断できます。
 ちなみにこの場合の差が出るための必要サンプル数は、有意確率5%、検出力0.8とした場合に5.7299、つまりそれぞれの集団で6つ以上サンプルを集めれば、差を出せるのです。一方、サンプルが、15,12,18,12,21,20,21,25,24,19の集団と、22,21125,24,24,15,12,18,12,22の集団ではどうでしょう。有意確率5%で差があるとはいえない結果になります。この場合に、このサンプルの分布様式で拾い出して差を出すために必要なサンプル数は551.33となり、552個もサンプルを抽出しないと差が出ないことになります。この計算上の必要サンプル数がこのくらい調査しないといけないものならば、必要サンプル数以上のサンプルを集めて調べなければなりませんし、これだけの数を集める必要がない、もしくは集めることが困難な場合は差があるとはいえないという判断をすることになるかと思います。

 一方、支持率調査や視聴率調査などの場合、比べるべき基準の対象がありません。その場合は、サンプル数が少ないレベルで予備調査を行い、さらにもう少しサンプル数を増やして予備調査を行いを何回か繰り返し、それぞれの調査でサンプルの分布形やその他検討するべき指数を計算し、これ以上集計をとってもデータのばらつきや変化が許容範囲(小数点何桁レベルの誤差)に納まるようなサンプル数を算出していると考えます。テレビ視聴率調査は関東では300件のサンプル数程度と聞いていますが、調査会社ではサンプルのとり方がなるべく関東在住の家庭構成と年齢層、性別などの割合が同じになるように、また、サンプルをとる地域の人口分布が同じ割合になるようにサンプル抽出条件を整えた上で、ランダムに抽出しているため、数千万人いる関東の本当の視聴率を割合反映して出しているそうです。これはすでに必要サンプル数の割り出し方がノウハウとして知られていますが、未知の調査項目では必要サンプル数を導き出すためには試行錯誤で適切と判断できる数をひたすら調査するしかないかと思います。

> どのような評価基準をもって客観的に信頼できると判断・・・
 例えば、工場で作られるネジの直径などは、まったくばらつきなくぴったり想定した直径のネジを作ることはきわめて困難です。多少の大きさのばらつきが生じてしまいます。1mm違っても規格外品となります。工場では企画外品をなるべく出さないように、統計を取って、ネジの直径のばらつき具合を調べ、製造工程をチェックして、不良品の出る確率を下げようとします。しかし、製品をすべて調べるわけにはいきません。そこで、調べるのに最低限必要なサンプル数を調査と計算を重ねてチェックしていきます。
 一方、農場で生産されたネギの直径は、1mmくらいの差ならほぼ同じロットとして扱われます。また、農産物は年や品種の違いにより生育に差が出やすく、そもそも規格はネジに比べて相当ばらつき具合の許容範囲が広くなっています。ネジに対してネギのような検査を行っていたのでは信頼性が損なわれます。
 そもそも、統計学的検定は客観的判断基準の一指針ではあっても絶対的な評価になりません。あくまでも最終的に判断するのは人間であって、それも、サンプルの質や検証する精度によって、必要サンプルは変わるのです。

 あと、お礼の欄にあった専門家:統計学者とありましたが、統計学者が指摘できるのはあくまでもそのサンプルに対して適切な検定を使って正しい計算を行ったかだけで、たとえ適切な検定手法で導き出された結果であっても、それが妥当か否か判断することは難しいと思います。そのサンプルが、何を示し、何を解き明かし、何に利用されるかで信頼度は変化するからです。
 ただ、経験則上指標的なものはあります。正規分布を示すサンプルなら、20~30のサンプル数があれば検定上差し支えない(それ以下でも問題ない場合もある)とか、正規分布でないサンプルは最低6~8のサンプル数が必要とか、厳密さを要求される調査であれば50くらいのサンプル数が必要であろうとかです。でも、あくまでも指標です。

> この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる・・・
 調べたいどの集団でも、ある一定数以上なら信頼できるというような決まりはありません。
 何かサンプルを集め、それをなんかの傾向があるかどうかという仮説を検証するために統計学的検定を行って、仮設が否定されるかされないかを調べる中で、どの検定方法を使うかで、最低限必要なサンプル数というのはあります。また、集めたサンプルを何か基準とすべき別のサンプルと比べる検定して、基準のサンプルと統計上差を出すに必要な...続きを読む

QArrayListを使った多次元配列の作成について

ArrayListで可変長配列を扱っているのですが、
2次元可変長配列を用いる必要が出てきたので、
下記のように変更したのですがうまくいきません。
何が悪いのか教えていただけませんでしょうか?

-----------------------------------------
ArrayList cars=new ArrayList();
cars.add("フェラーリ");
cars.add("ポルシェ");
cars.add("メルセデスベンツ");
for(int i=0;i<cars.size();i++){
 String str=(String)cars.get(i);
 System.out.println(str);}
-----------------------------------------
上記から下記のように変更しました。
-----------------------------------------
ArrayList[] cars=new ArrayList[3];
cars[0].add("フェラーリ");
cars[0].add("ポルシェ");
cars[0].add("メルセデスベンツ");
for(int i=0;i<cars[0].size();i++){
 String str=(String)cars[0].get(i);
 System.out.println(str);}
-----------------------------------------
エラーは「Exception in thread "main" java.lang.NullPointerException」です。
どうやら初期配列が10ではなく3となってしまっているようです。

ArrayListで可変長配列を扱っているのですが、
2次元可変長配列を用いる必要が出てきたので、
下記のように変更したのですがうまくいきません。
何が悪いのか教えていただけませんでしょうか?

-----------------------------------------
ArrayList cars=new ArrayList();
cars.add("フェラーリ");
cars.add("ポルシェ");
cars.add("メルセデスベンツ");
for(int i=0;i<cars.size();i++){
 String str=(String)cars.get(i);
 System.out.println(str);}
---------------------------------------...続きを読む

Aベストアンサー

こんにちは。

>ArrayList[] cars=new ArrayList[3];
はArrayList型のオブジェクトのインスタンス
を格納する箱を3個作成しただけなので、
この時点では、
cars[0] = null
cars[1] = null
cars[2] = null
となっています。ですから、当然
cars[0].add("フェラーリ");
などとやると、NullPointerExceptionが
発生します。これをさけるには、
cars[0] = new ArrayList();
cars[1] = new ArrayList();
cars[2] = new ArrayList();
とする必要があります。

QCで3乗根を求める方法

C言語で、ある値の3乗根を求める関数はないのでしょうか?
どなたかご存知の方教えてください<(_ _)>

Aベストアンサー

精度の問題はありますが……

math.h のなかの、pow() で出来ると思いますよ。

y = pow(x, 1.0 / 3.0);

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Qdouble型変数値の整数部分のみ取得したい

ご存知の方がおりましたら、教えてください。
double型変数値の整数部分のみStringで取得したいのですが、
Javaの場合、どうすれば簡単に取得できますでしょうか?
(double)32000.0

(String)32000

Aベストアンサー

int に納まらないなら、long にキャストでよいのでは?
long に納まらない数値が対象となるようなら、BigDecimalを中継する必要があるでしょう
((new BigDecimal(double_data) ).toBigInteger()).toString()

Q配列の中に重複文字列があるか否かをチェックしたいのですが、アルゴリズムを教えてください。

配列10000個の中に次のように文字列が入っているとします。
(実際に使うのはもっとずっと長い文字列が配列内に格納されています。)
Data_Array[1] = "GRZRMZCOMKMSG"
Data_Array[2] = "DCUIROTLUMWBC"
Data_Array[3] = "RGLBMILRPBSMY"
.
.
.
Data_Array[9998] = "RSKFDHAHMOESI"
Data_Array[9999] = "AQVOXBVNILGOP"
Data_Array[10000] = "YNYRUPEXYOGFN"

配列Data_Array[10000]の中に重複文字列がないか探索したいと考えています。

~普段の手順~
配列中身を一度テキストに吐き出し、そのテキストをExcelに貼り付ける。
そして、Excelのフィルタ機能で重複文字列を排除。
その後、重複文字列を排除した文字列を保存したものをテキストファイルに保存する。
それをプログラムで読み込んで配列内に格納してから次の処理を続ける

といった、効率の悪い方法をとっています。
そこで、プログラム内で処理する方法を次のように考えてみました。

~思いつく方法~
dim DataArrayTemp[10000]
for i = 1 to 10000
flag = 0
// 重複文字がないかチェック
for j = i+1 to 10000
ifb Data_Array[i] = Data_Array[j] then
// 重複があった場合はflag = 1にする
flag = 1
break// 内ループ脱出
endif
next
// flag = 0であれば重複がない項目 (flag = 1のときは、重複がある)
ifb flag = 0 then
DataArrayTemp[temp_i] = Data_Array[i]
temp_i = temp_i + 1
endif
next

これは、力技なので配列内の量が多くなると計算時間がかかってしまいます。

ですので、重複しない文字列だけを抽出する効率の良い方法がありましたらどなたか知恵を貸してください。

配列10000個の中に次のように文字列が入っているとします。
(実際に使うのはもっとずっと長い文字列が配列内に格納されています。)
Data_Array[1] = "GRZRMZCOMKMSG"
Data_Array[2] = "DCUIROTLUMWBC"
Data_Array[3] = "RGLBMILRPBSMY"
.
.
.
Data_Array[9998] = "RSKFDHAHMOESI"
Data_Array[9999] = "AQVOXBVNILGOP"
Data_Array[10000] = "YNYRUPEXYOGFN"

配列Data_Array[10000]の中に重複文字列がないか探索したいと考えています。

~普段の手順~
配列中身を一度テキストに吐き出し、そのテ...続きを読む

Aベストアンサー

ハッシュ(連想配列)を使ってはどうでしょうか?

~Perlの例~
#$dataArrayTemp[0 .. 9999]には既に値が格納されていると仮定
%temp = ();
%nodup = ();
for ($i = 0; $i <1000; $i++) {
if (defined($temp{$dataArrayTemp[$i]})) {
if (defined($nodup{$dataArrayTemp[$i]})) {
push(@dups, delete($nodup{$dataArrayTemp[$i]}));
}
next;
}
$temp{$dataArrayTemp[$i]} = $i;
$nodup{$dataArrayTemp[$i]} = $i;
}

ソートすると,例えば(一般に最速と言われている)クイックソートならO(N logN)の計算量になりますが,ハッシュを使えば(少なくとも見かけ上の)計算量はO(N)で済みます。

ただ123456zennsinnさんの使っている言語(BASIC系?)にハッシュがあるかどうかは? VB.NETだとHashtableクラスとかありそうですが。

http://www.atmarkit.co.jp/fdotnet/dotnettips/125hashtable/hashtable.html

ハッシュ(連想配列)を使ってはどうでしょうか?

~Perlの例~
#$dataArrayTemp[0 .. 9999]には既に値が格納されていると仮定
%temp = ();
%nodup = ();
for ($i = 0; $i <1000; $i++) {
if (defined($temp{$dataArrayTemp[$i]})) {
if (defined($nodup{$dataArrayTemp[$i]})) {
push(@dups, delete($nodup{$dataArrayTemp[$i]}));
}
next;
}
$temp{$dataArrayTemp[$i]} = $i;
$nodup{$dataArrayTemp[$i]} = $i;
}

ソートすると,例えば(一般に最速と言われている)クイッ...続きを読む

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。