4択クイズのランダム出題方法

このQ&Aのポイント
  • JAVAを使って4択クイズの作成をしていますが、5問の問題を連続して表示するプログラムを3問のランダムな出題に変更したいです。
  • 乱数を使用してランダムな問題を選ぶ方法を教えてください。
  • プログラムの構造や変更点についても教えていただけると幸いです。
回答を見る
  • ベストアンサー

4択クイズでのランダム出題の方法。

JAVAにて4択クイズの作成をしているのですが、下記は5問の問題を連続して表示するプログラムなんですが、これは5問の中から3問をランダムで表示させるようにしたいのですが、どのようにしたら良いのでしょうか。 乱数を使うのも考えたのですが、どのように入れていけばわからないです。よろしければ教えて下さい。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class kake extends Applet implements ActionListener{ private Checkbox CB[]; private CheckboxGroup CBG; private Button BT; private Label QL, PL; private Panel P1, P2; private String[][] question = { {"問題1","A","B","C","D","1"}, {"問題2","A","B","C","D","2"}, {"問題3","A","B","C","D","3"}, {"問題4","A","B","C","D","4"}, {"問題5","A","B","C","D","1"}, }; private int rightAns, count; public void init(){ rightAns = Integer.parseInt(question[0][5]); count = 0; CB = new Checkbox[4]; setLayout(new GridLayout(5, 1)); CBG = new CheckboxGroup(); add(QL = new Label(question[0][0])); add(P1 = new Panel(new GridLayout(1, 2))); P1.add(CB[0] = new Checkbox(question[0][1], CBG, true)); P1.add(CB[1] = new Checkbox(question[0][2], CBG, false)); add(P2 = new Panel(new GridLayout(1, 2))); P2.add(CB[2] = new Checkbox(question[0][3], CBG, false)); P2.add(CB[3] = new Checkbox(question[0][4], CBG, false)); add(BT = new Button("答える")); BT.addActionListener(this); BT.setActionCommand("BT"); add(PL = new Label("")); } public void actionPerformed(ActionEvent ae){ try{ if(ae.getActionCommand().compareTo("BT") == 0){ if(CB[rightAns].getState()){ judgement(true); } else{ judgement(false); } setQuestion(); } } catch(Exception e){ PL.setText(e.toString()); } } private void setQuestion(){ QL.setText(question[count][0]); rightAns = Integer.parseInt(question[count][5]); CB[0].setLabel(question[count][1]); CB[1].setLabel(question[count][2]); CB[2].setLabel(question[count][3]); CB[3].setLabel(question[count][4]); repaint(); } private void judgement(boolean ans){ String result; if(ans == true){ result = "正解"; } else{ result = "不正解"; } if(count == 9){ PL.setText(result); } else{ PL.setText(result); count++; } } }

  • Java
  • 回答数4
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • tekebon
  • ベストアンサー率62% (36/58)
回答No.4

すみません回答が遅くなりました 問題の順番を決めてから表示をしますので、init()メソッドの先頭で 順番を入れ替えてから、1問目をGUIにセットするのがいいと思います。 順番を入れ替えているだけなので問題が重複することはありません。 また、問題文(選択肢)を丸ごと入れ替えるのであれば解答がおかしい ということにはならないはずです。 このへんは実際のコードを見てみないと何とも言えません。 問題の順番がランダムで選択肢の入れ替えはないということでいいんですよね? 応用的には選択肢クラスと問題クラスを設計し、問題クラスのメンバとして 選択肢クラスの配列持つといったような考え方をするのがいいと思います。

tale23kaga10wa
質問者

お礼

さらに回答いただいてありがとうございます。 無事解決しました。

その他の回答 (3)

回答No.3

>この方法ですと重複の問題が出てこないでしょうか。 でてきますね。 でも「重複を許可しない」のは「ランダム」じゃありません。 1度出てきたら絶対に出てこない数字があるのはランダムじゃないですよね。 で、1度出てきた数字が出てこないようにするには、 出てきた数字を覚えておいて、2回目以降は飛ばして、次の数字を持ってくる。 でいいのでは?

tale23kaga10wa
質問者

お礼

さらに回答いただいてありがというございます。 無事解決しました。

  • tekebon
  • ベストアンサー率62% (36/58)
回答No.2

Math.random()は0.0~1.0未満の値を返します。 そこでこの乱数にデータ数nを掛け、int型にすることで0~(n-1)の ランダムな値を得ることができます。 今回は5問中3問出すということでしたので、重複せずに選ぶ方法として 5問をシャッフルして先頭から3問を使うという方法が考えられます。 ※問題のストック数に対して、使用する問題数がはるかに少なければ  ランダムに使用する問題数だけ選んだ方がいいと思います。 「先頭から順にランダムな番号と入れ替える」とすることでシャッフル することができます String tmp[]; for(int i=0; i<question.length; i++){ //先頭から順番に繰り返す  k = (int)(Math.random()*question.length);//入れ替える番号をランダムに求める  //問題文を入れ替える  tmp = question[i];  question[i] = question[k];  question[k] = tmp; } ランダムに使用する問題数だけ選ぶのであればArrayListを 使用すると便利です。 ArrayList#contains()メソッドを使用することで要素の重複を 確認できます。 また2つのArrayListを用意して一方からもう一方へ要素を 移すという方法も考えられます。 ArrayList#remove()で一度選んだものは削除することで 重複しないようにできると思います。

tale23kaga10wa
質問者

お礼

さらに回答していただいてありがとうございます。 無事解決しました。

tale23kaga10wa
質問者

補足

詳しくありがとうございます。 またわかりやすいように、実際のプログラムの例文まで書いていただきありがとうございます。 この例文はquestionの乱数によって順番を入れ替えて、順番がランダムになったquestion[k]が指定されると理解しました。ですので、上記のソースのsetQuestion()メソッドの中に入れれば、うまくいくと思いました。 ですが、問題はランダムに表示されるのですが、重複が起きたり、また出題されている問題と違う答えで認識してしまっています。 この例文を上記のソースのどこに入れたらうまくいくのでしょうか。 またinit()メソッドで最初に一番最初の問題を指定しているのですが、最初もランダムに表示させるにはinit()メソッドを使用しないほうが良いのでしょうか。 知識が乏しくて、質問が多くてすいません。 どうか教えてもらえないでしょうか。

回答No.1

ランダムクラスで乱数を生成して、 取得した乱数を5で割った剰余を問題番号にあてはめれば? ↑を3回繰り返せば擬似的にランダムに3問選べるよ。

tale23kaga10wa
質問者

お礼

ご回答ありがとうございます。 この方法ですと重複の問題が出てこないでしょうか。 私の質問に重複が出ないようにと書かなかったので、迷惑かけてすいません。 ランダムクラスの知識に乏しいので、勉強したいと思います。

関連するQ&A

  • JAVAアプレットのクイズのレイアウト。

    JAVAのアプレットを用いてクイズを作成しているのですが、下のソースは5問を連続で表示させるものです。 これを1問ごとに回答した後に「次の問題へ」というボタンだけ画面に切り替わり、そのボタンを押すと次の問題が出てくるようにしたいのですが、どのようにしたら良いでしょうか。 また5問終わったら、「もう一度」というボタンだけの画面に切り替わり、そのボタンを押すと、また1問目から始まるようにしたいのですが、どのようにしたら良いでしょうか。 どちらかだけでもいいので、教えてもらえないでしょうか。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class kake extends Applet implements ActionListener{ private Checkbox CB[]; private CheckboxGroup CBG; private Button BT; private Label QL, PL; private Panel P1, P2; private String[][] question = { {"問題1","A","B","C","D","1"}, {"問題2","A","B","C","D","2"}, {"問題3","A","B","C","D","3"}, {"問題4","A","B","C","D","4"}, {"問題5","A","B","C","D","1"}, }; private int rightAns, count; public void init(){ rightAns = Integer.parseInt(question[0][5]); count = 0; CB = new Checkbox[4]; setLayout(new GridLayout(5, 1)); CBG = new CheckboxGroup(); add(QL = new Label(question[0][0])); add(P1 = new Panel(new GridLayout(1, 2))); P1.add(CB[0] = new Checkbox(question[0][1], CBG, true)); P1.add(CB[1] = new Checkbox(question[0][2], CBG, false)); add(P2 = new Panel(new GridLayout(1, 2))); P2.add(CB[2] = new Checkbox(question[0][3], CBG, false)); P2.add(CB[3] = new Checkbox(question[0][4], CBG, false)); add(BT = new Button("答える")); BT.addActionListener(this); BT.setActionCommand("BT"); add(PL = new Label("")); } public void actionPerformed(ActionEvent ae){ try{ if(ae.getActionCommand().compareTo("BT") == 0){ if(CB[rightAns].getState()){ judgement(true); } else{ judgement(false); } setQuestion(); } } catch(Exception e){ PL.setText(e.toString()); } } private void setQuestion(){ QL.setText(question[count][0]); rightAns = Integer.parseInt(question[count][5]); CB[0].setLabel(question[count][1]); CB[1].setLabel(question[count][2]); CB[2].setLabel(question[count][3]); CB[3].setLabel(question[count][4]); repaint(); } private void judgement(boolean ans){ String result; if(ans == true){ result = "正解"; } else{ result = "不正解"; } if(count == 9){ PL.setText(result); } else{ PL.setText(result); count++; } } }

    • ベストアンサー
    • Java
  • applet

    タイピングを作ってます。これだと、動くのですが入力することができません。どうしたらいいでしょうか。よろしくお願いします。 public void init() { setSize(300,300); setBackground(Color.MAGENTA); for(int i=0; i<26; i++) { chk[i] = 0; // 初期値入力 } flag = 0; // フラグの初期化 setLayout(new BorderLayout()); top = new Panel(); // パネル作成 top.setLayout(new GridLayout(3, 2)); top.add(question = new Label("タイピング 初級")); top.setFont(new Font("MS ゴシック",Font.ITALIC,18)); top.add(q_choice = new Choice()); top.add(stat = new Label("")); q_choice.add("基本"); // 選択ボックスにアイテム追加 q_choice.add("応用"); add(start_btn = new Button(" スタート ")); add(answer = new TextField()); answer.setFont(new Font("MS ゴシック",Font.BOLD,24)); add("North", top); add("South", start_btn); add("Center",answer); start_btn.addActionListener(new ActionListener() { //スタートボタンを押されたときの処理 public void actionPerformed(ActionEvent e) { // if (flag==0) { // flag = 1; typing(); // スレッド開始 // } } }); } public void typing() { TimerA runA = new TimerA(); Thread threadA = new Thread(runA); threadA.start(); boolean flg = true; int count = 0; if (q_choice.getSelectedIndex() == 0){ // 問題判定(指定された項目に一致する、リスト内の最初の項目を返します。) q_data = q_data1; mon = q_data1.length; } else { q_data = q_data2; mon = q_data2.length; } for (int i = 3; i > 0; i--) { // カウントダウン question.setText(""+i); } pt = 0; // 点数初期化 m = (int)(mon * Math.random()); // 1問目の問題決定 ランダムで question.setText(q_data[m]); question.setBackground(new Color(250,128,114)); // 背景色設定 stat.setBackground(new Color(0,206,209)); chk[m] = 1; // 問題のフラグを立てる while(count < 10) { // 問題をまわす time = 6000; if(q_data[m].equals(answer.getText())) { pt += (int)(10000 / (itime - time)); // 点数算出 while(chk[m] != 0) { m = (int)(mon * Math.random()); } chk[m] = 1; question.setText(q_data[m]); //answer.setFont(new Font("MS ゴシック",Font.BOLD,24)); answer.setText(""); } try { threadA.sleep(1000); } catch(InterruptedException e) {} flg = runA.isFlg(); if (flg == false){ count++; runA = new TimerA(); threadA = new Thread(runA); threadA.start(); time -= 10; } // time = runA.getTime(); stat.setText("残り時間 : "+(time/10)+"."+(time%10)+"秒 点数:"+pt+"点"); } question.setText("終了です!お疲れ様でした!"); stat.setText("Time Over! 点数:"+pt+"点"); } } class TimerA implements Runnable { private boolean flg = true; private int time = 6000; public boolean isFlg() { return flg; } public int getTime(){ return time; } public void run() { for(;time > 0; time--) ; flg = false; System.out.println(time); } }

  • Java JPanelを使ったコードについての質問です

    Java JPanelを使ったコードについての質問です 4つのTextFieldに数値を入力し、エンターキーが押されたときに円グラフが表示されるプログラムについての質問です。 下記のコードなのですが、何故かエラーが出てしまいます… public class PieCharts extends JPanel implements ActionListener { private JLabel l1, l2, l3, l4; private JTextField t1, t2, t3, t4; private JButton bt; private JPanel pn1,pn2; int h, m, l, n, w, x, y, z; private DrawOvalPane dop; public static void main(String args[]) { JFrame frame = new JFrame("Applet"); frame.setContentPane(new PieCharts()); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.pack(); frame.setVisible(true); } public PieCharts() { dop = new DrawOvalPane(); l1 = new JLabel("High Risk", JLabel.RIGHT); l2 = new JLabel("Medium Risk", JLabel.RIGHT); l3 = new JLabel("Low Risk", JLabel.RIGHT); l4 = new JLabel("No Risk", JLabel.RIGHT); t1 = new JTextField(); t1.addActionListener(this); t2 = new JTextField(); t2.addActionListener(this); t3 = new JTextField(); t3.addActionListener(this); t4 = new JTextField(); t4.addActionListener(this); bt = new JButton("Enter"); pn1 = new JPanel(); pn2 = new JPanel(); pn1.setLayout(new GridLayout(2,4)); pn1.add(l1); pn1.add(t1); pn1.add(l2); pn1.add(t2); pn1.add(l3); pn1.add(t3); pn1.add(l4); pn1.add(t4); pn2.add(bt); setLayout(new BorderLayout()); add("North", pn1); add("Center", dop); add("South", pn2); bt.addActionListener(new SampleActionListener()); }

  • 【Java】エラーの意味・直し方

    こんにちは。当方java初心者です。 eclipseで電卓のプログラムを作ってみたのですが、コンパイルする際に Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 14 at Keypad.<init>(Calculator.java:81) at Calculator.<init>(Calculator.java:24) at Calculator.main(Calculator.java:39) とエラーがでました。 81、24、39行目に何かミスがあったのかな?と思いましたが、自分ではどこが間違っているのか全くわからない状態です・・・ ・なにが間違っているのか ・どうしたらコンパイルが通るのか の、2点をお聞きしたいです。 初心者ゆえわかりにく文章での質問申し訳ありませんが、回答してくださると嬉しいです。 ソースです。↓ import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Calculator extends Frame { private Display out; private Keypad in; private Maths sums; public Calculator() { setLayout(new BorderLayout()); out = new Display(); sums = new Maths(out); in = new Keypad(out); add("North", out); add("Center", in); add("East", sums); this.addWindowFocusListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { Frame f = new Calculator(); f.setSize(100, 200); f.setVisible(true); } } class Display extends Panel { private TextField show; public Display() { show = new TextField(10); Panel p = new Panel(); p.add(show); add("Center", p); } public void write(String s) { show.setText(s); } public String read() { return show.getText(); } } class Keypad extends Panel implements ActionListener { private Display monitor; public Keypad(Display myMonitor) { monitor = myMonitor; Panel p = new Panel(); p.setLayout(new GridLayout(5, 3)); String[] buttonLabels = {"0","1","2","3","4","5","6","7","8","9",".","","","C"}; Button[] buttons = new Button[15]; for (int i = 0; i <= 14; i++) { buttons[i] = new Button(buttonLabels[i]); buttons[i].addActionListener(this); p.add(buttons[i]); } add("Center", p); } public void actionPerformed(ActionEvent e) { char c = e.getActionCommand().charAt(0); switch(c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.': monitor.write(monitor.read()+c); break; case 'C': monitor.write(""); break; } } } class Maths extends Panel implements ActionListener { private Display monitor; private double num1, num2, result; private char operand; public Maths(Display myMonitor) { monitor = myMonitor; Panel p = new Panel(); p.setLayout(new GridLayout(5, 1)); String[] buttonLabels = {"+","-","*","/","="}; Button[] buttons = new Button[5]; for (int i = 0; i <= 4; i++) { buttons[i] = new Button(buttonLabels[i]); buttons[i].addActionListener(this); p.add(buttons[i]); } add("North", p); } public void actionPerformed(ActionEvent e) { char c = e.getActionCommand().charAt(0); switch(c) { case '+': case '*': case '-': case '/': num1 = Double.valueOf(monitor.read()).doubleValue(); operand = c; monitor.write(""); break; case '=': num2 = Double.valueOf(monitor.read()).doubleValue(); result = sum(num1, num2, operand); monitor.write(String.valueOf(result)); } } public double sum(double x, double y, char z) { double answer = 0; if(z == '+')answer = x+y; else if(z == '-') answer = x-y; else if(z == '*') answer = x*y; else if(z == '/') answer = x/y; return answer; } }

    • ベストアンサー
    • Java
  • java applet 上段に2×3、下段に1×3のボタンを作る

    タイトルのようなアプレットを作りたいのですがなぜか実行されません。どこがおかしいのでしょうか? (文字数制限のため省略) { private JButton bt[] = new JButton[9]; private JPanel pn[] = new JPanel[2]; int i; public void init() { Container cnt = getContentPane(); for(i=0; i<9; i++){ add(bt[i] = new JButton("")); } pn[0] = new JPanel(); pn[1] = new JPanel(); //上パネルに置くボタン6つ bt[0].setSize(80,80); bt[0].setLocation(0,0); bt[1].setSize(80,80); bt[1].setLocation(80,0); bt[2].setSize(80,80); bt[2].setLocation(160,0); bt[3].setSize(80,80); bt[3].setLocation(0,80); bt[4].setSize(80,80); bt[4].setLocation(80,80); bt[5].setSize(80,80); bt[5].setLocation(160,80); //下パネルに置くボタン3つ bt[6].setSize(80,80); bt[6].setLocation(0,200); bt[7].setSize(80,80); bt[7].setLocation(80,200); bt[8].setSize(80,80); bt[8].setLocation(160,200); //上パネルと下パネルの作成 pn[0].setLocation(0,0); pn[1].setLocation(0,200); //ボタンをパネルに付ける pn[0].add(bt[0]); pn[0].add(bt[1]); pn[0].add(bt[2]); pn[0].add(bt[3]); pn[0].add(bt[4]); pn[0].add(bt[5]); pn[1].add(bt[6]); pn[1].add(bt[7]); pn[1].add(bt[8]); //コンテナへ追加 cnt.add(pn[0]); cnt.add(pn[1]); } } 座標を指定してボタンを設置する方法にしたいと思っています。 ちなみに完成図はこのような感じにしたいです。 ↓ □□□ □□□ □□□

    • ベストアンサー
    • Java
  • GridLayoutについて

    GridLayoutレイアウトで ボタンを追加し 後で プログラムで レイアウトの( 2, 1 )に  別のボタンを配置したり ( 2, 2 )の位置に 何のコンポーネントのオブジェクトがあるか? と知ることが出来る 方法はありますか? 教えてください。 JPanel p = new JPanel(); p.setLayout( new GridLayout( 2, 2 ) ); JButton b1 = new JButton( "Button1" ); JButton b2 = new JButton( "Button2" ); JButton b3 = new JButton( "Button3" ); JButton b4 = new JButton( "Button3" ); p.add( b1 ); p.add( b2 ); p.add( b3 ); p.add( b4 );

    • ベストアンサー
    • Java
  • コンポーネントの組み込みについて

    アプレットでもAWTアプリでもSwingアプリでもなんでもいいんですが、 特定の条件を満たした時に、はじめは表示されていないボタンやテキストフィールドなどを後から表示させたいのですが、できません。 単純にadd()ではできないようで… やり方を教えていただけませんか。。 下は、10秒後にボタンが表示されるように自分で作ってみたサンプルアプレットです。 //<applet code="buttonsample.class" width=300 height=200></applet> import java.applet.*; import java.awt.*; import java.awt.event.*; public class buttonsample extends Applet implements Runnable { int count; //カウント Thread th; //スレッド Button BT; //ボタン public void init() { setLayout(new FlowLayout()); count = 0; BT = new Button(); BT.setLabel("ボタン"); } public void start() { if(th == null) { th = new Thread(this); th.start(); } } public void stop() { th = null; } public void run() { while(count < 10) { repaint(); count++; try { Thread.sleep(1000); } catch(InterruptedException e){} } add(BT); } public void paint(Graphics g) { g.drawString(""+(count+1),100,100); } } <EOS>

    • ベストアンサー
    • Java
  • javaの初心者です。

    コンピュータとじゃんけんをするプログラムをつくりたいのですが コンパイルしたところ、次のようなエラーが出てきました。 java:8: メソッドの宣言が不正です。戻り値の型が必要です。 すいませんが、どこをどう直したらいいのかわかりません。 よろしければお教え願います。 以下がプログラムです。 import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.applet.AudioClip; class Zyanken extends YJFrame implements ActionListener{ JButton bt1,bt2,bt3; JLabel lb1,lb2,lb3; YJFrame(String s, int w, int h,int b){ super(s,w,h,b); String[] ttl={"グー","チョキ","パー","Exit"}; String[] tips={"グーです","チョキです","パーです","終了します"}; int i; setUp(); Icon[] ic=new Icon[4]; for(i=0;i<4;i++) ic[i]=new ImageIcon("icon"+i+".gif"); btn=new JButton[4]; for(i=0;i<4;i++){ btn[i]=new JButton(ttl[i],ic[i]); btn[i].setToolTipText(tips[i]); btn[i].addActionListener(this); } JPanel p=new JPanel(); for(i=0;i<4;i++) p.add(btn[i]); p.setBackground(Color.pink); pane.add(p,BorderLayout.SOUTH); panel=new JPanel(); pane.add(panel,BorderLayout.CENTER); } public void actionPerformed(ActionEvent e){ int com=(int)(Math.random()*4); if(com==1){ lb2.setText("COMはグーです。"); } else if(com==2){ lb2.setText("COMはチョキです。"); } else{ lb2.setText("COMはパーです。"); } if(e.getSource()==bt1){ if(com==1){ lb3.setText("あいこです。"); } else if(com==2){ lb3.setText("あなたの勝ちです。"); } else{ lb3.setText("あなたの負けです。"); } } else if(e.getSource()==bt2){ if(com==1){ lb3.setText("あなたの負けです。"); } else if(com==2){ lb3.setText("あいこです。"); } else{ lb3.setText("あなたの勝ちです。"); } } else{ if(com==1){ lb3.setText("あなたの勝ちです。"); } else if(com==2){ lb3.setText("あなたの負けです。"); } else{ lb3.setText("あいこです。"); } } } }

  • ボタンの複数割り当てについて

    public class TestButton extends Applet implements ActionListener {      Button bt1,bt2,bt3;      public void init()      {           bt1 = new Button("red");           add(bt1);           bt2 = new Button("blue");           add(bt2);           bt3 = new Button("yellow");           add(bt3);           bt1.addActionListener(this);       } java初心者です。アプレットで上のようにボタンを作ります。それぞれが押された時に、red,blue,yellowが表示されるようにしたいのです。ActionListenerをインプリメントしているので、      public void actionPerformed(ActionEvent ae) をオーバーライドする必要がありますが、そこで質問です。 ボタンを3種類別々に関連づけるには、actionPerformed内をどのように記述したらよいでしょうか?また、init内はこれだけでいいんでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • インスタンス変数へのアクセスについて

    理論的な質問ですが・・ public class pra extends JFrame{ JLabel myj; public pra(){ ~初期化 } public static void main(String args[]){ pra p=new pra(); p.myj.setText("ready"); *1 p.jlset(); } private void jlset(){ myj.setText("go"); *2 } } *1では変数myjにアクセスするのに、オブジェクト参照 変数p が必要ですが、*2では、必要ありません。 この違いがよくわかりません。理屈では*2でもpを つけるべきだと思いますが(p.myj)、これをつけると エラーになってしまいます。 なにかアドバイスお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう