-1

私はどこで間違ったのかを見つけようとしています。このコードは、2 つの乱数を取り、一方が他方の因数であるかどうかを調べ、回答に基づいてさまざまな結果を出力すると想定されています。

どこで間違ったのかわかりませんが、何らかの理由で、コードが if ステートメントに進まないのです。

//import Scanner class
import java.util.Scanner;

//add class structure
public class Factor 
{
     //add main method
     public static void main(String[] args)
     {
          //initialize the first number          
          int number1;
          //initialize the second number
          int number2;
          String yes = "yes";
          String no = "no";

          //generate random number 1
          number1 = (int)(Math.random()*11);
          //generate random number 2
          number2 = (int)(Math.random()*101);
          //if number one is larger, swap
          if (number2 < number1)
          {
               //store the value of number 1
               int store = number1;
               //number 1 becomes the same magnitude as number 2
               number1 = number2;
               //number 2 is now the stored value
               number2 = store;
          }
          //construct instance of scanner
          Scanner myScanner;
          //input for scanner
          myScanner= new Scanner( System.in);
          //system statement
          System.out.println("Is " + number1 + " a factor of " + number2 + " ? (yes or no)");
          //accept user input
          String answer = myScanner.nextLine();
          //divide to see if a factor
          double number3 = (double)number2 / (double)number1;
          //setup inital parameters
          if (answer == yes){
               //setput more parameters
               if ((int)number3 == number3) {
                    //ouput statement
                    System.out.println("Enter the value of x that (x * " + number1 + " = " + number2 + " : ");
                    //accept user input
                    int userinput = myScanner.nextInt();
                    //setup parameters
                    if (userinput == number3){
                         //output statement
                         System.out.println("Your answer is correct!");
                    }
                    //response
                    else {
                         //output statement
                         System.out.println("Actually, " + number3 + " is the correct answer.");
                    }
               }
               //setup parameters
               if ((int)number3 != number3) {
                    System.out.println("Actually, " + number1 + " isn't a factor of " + number2 + " .");
               }
          }
          //setup new parameters
          if (answer == no) {
               //setup parameters
               if ((int)number3 == number3) {
                    //output statement
                    System.out.println("Actually, " + number1 + " is a factor of " + number2 + " .");
               }
               //response statement
               else { 
                    //output statement
                    System.out.println("Your answer is correct!");
               }
          }
     }
}
4

2 に答える 2

2

別の文字列比較。:)

  if (answer == yes){

する必要があります

  if (answer.equals(yes)){

メソッドを使用して文字列の等価性equals()をチェックします。演算子は、2 つの参照変数が同じ文字列オブジェクトを参照しているかどうかを確認するだけです。==

于 2013-02-19T23:33:33.157 に答える
0

また、提案として、文字列の比較に加えて、変数 'number3' を Double として宣言し、if 句で int にキャストする代わりにメソッド intValue() を呼び出すことができることを追加します。お気に入り

Double number3 = (double)number2 / (double)number1;
....
if (number3.intValue() == number3) {....}   //instead of if ((int)number3 == number3) 
于 2013-02-19T23:53:05.683 に答える