• 締切済み

緊急事態!!教えて

public class sstu { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int n,N=2,i; StringBuffer ques1 = new StringBuffer(200); StringBuffer ques2 = new StringBuffer(200); ques1.append("大人4人と子供2人の料金は560円です。大人3人と子供3人の料金は540円です。では大人と子供の料金はそれぞれいくらですか"); ques2.append("大人5人と子供2人の料金は600円です。大人3人と子供1人の料金は350円です。では大人と子供の料金はそれぞれいくらですか"); n=(int)(Math.random()*1000000)%N; n=n+1; for(i=1;i<=n;i++){ if(i==n){ System.out.println(ques + "i"); } } } } えくりぷすで作ったこのjavaのプログラム。System.out.println(ques + "i");でfor文の中でまわして、ques1やques2の内容を表示させたいのですが、これだとダメみたいです。switchとかif文でやってもいいのですが、それだと拡張性が低いし、面倒くさいです。このように System.out.printlnでques1や2の内容を表示できませんか?もし ques1~ques100まで拡張したときには、とても楽になるのですが・・

みんなの回答

  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.2

手元にJavaの開発環境がないので、目を凝らしてソースを見るしか ないのですが・・・・・ 以下の3点が気になります。 (1) double n = Math.floor(Math.random()*ques.size()); 最初の double は Double です。大文字のDです。 double はプリミティブ型なので、Doubleで宣言してください。 (2) System.out.println( ques.get(n.intValue()) ); 上のほうで、Vector が Vector<String> となっていないので、 System.out.println( (String)ques.get(n.intValue()) ); というようにキャストする必要があるかもしれません。 (3) int N=2,i; もうこの行は必要ありません。 また、宣言はまとめて宣言せず、一つづつ宣言しましょう。 そして、めんどくさがらずわかりやすい変数名にしましょう。

  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.1

プログラムの目的が良くわからないのですが、複数の質問のうち、ランダムにそのうちの 1つを表示したい、ということでよいのでしょうか。 配列もしくは、Vectorなどを利用して、乱数の場所をダイレクトに取得すると簡単に書けます。 こんな感じ。 java.util.Vector<String> ques = new java.util.Vector(); ques.add( new String("大人4人と子供2人の料金は560円です。大人3人と子供3人の料金は540円です。では大人と子供の料金はそれぞれいくらですか") ); ques.add( new String("大人5人と子供2人の料金は600円です。大人3人と子供1人の料金は350円です。では大人と子供の料金はそれぞれいくらですか") ); Double n = Math.floor( Math.random()*ques.size() ); System.out.println( ques.get(n.intValue()) );

una_hoge
質問者

補足

ランダムにそのうちの 1つを表示したい、ということでよいのでしょうか。 そうそう!!そのとおり!! こんな感じに書き換えました。import java.util.*; public class sstu { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int N=2,i; Vector ques = new java.util.Vector(); //Vector ques2 = new Vector(); ques.add("大人4人と子供2人の料金は560円です。大人3人と子供3人の料金は540円です。では大人と子供の料金はそれぞれいくらですか"); ques.add("大人5人と子供2人の料金は600円です。大人3人と子供1人の料金は350円です。では大人と子供の料金はそれぞれいくらですか"); double n = Math.floor(Math.random()*ques.size()); //for(i=1;i<=n;i++){ //if(i==n){ System.out.println( ques.get(n.intValue()) ); //} //} } } するとなんかSystem.out.println( ques.get(n.intValue()) );のところでエラーがでています。

関連するQ&A