Java 新程序员试图在代码中找到错误

Java 新程序员试图在代码中找到错误,java,if-statement,random,Java,If Statement,Random,我正试图找出我错在哪里。代码假设取两个随机数,找出其中一个是否是另一个的因子,并根据您的答案打印出各种结果 我不知道我哪里出错了,但由于某种原因,代码不会进入我的if语句 //import Scanner class import java.util.Scanner; //add class structure public class Factor { //add main method public static void main(String[] args)

我正试图找出我错在哪里。代码假设取两个随机数,找出其中一个是否是另一个的因子,并根据您的答案打印出各种结果

我不知道我哪里出错了,但由于某种原因,代码不会进入我的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!");
               }
          }
     }
}
//导入扫描程序类
导入java.util.Scanner;
//添加类结构
公共阶级因素
{
//添加主方法
公共静态void main(字符串[]args)
{
//初始化第一个数字
整数1;
//初始化第二个数字
整数2;
String yes=“yes”;
字符串no=“no”;
//生成随机数1
number1=(int)(Math.random()*11);
//生成随机数2
number2=(int)(Math.random()*101);
//如果第一个更大,交换
如果(数字2<数字1)
{
//存储数字1的值
int store=number1;
//数字1与数字2的大小相同
编号1=编号2;
//数字2现在是存储值
数字2=存储;
}
//构造扫描仪实例
扫描器;
//扫描仪输入
myScanner=新扫描仪(System.in);
//系统语句
System.out.println(“是“+number1+”的系数是“+number2+”?(是或否)”);
//接受用户输入
字符串answer=myScanner.nextLine();
//除以以查看是否存在一个因子
双精度数字3=(双精度)数字2/(双精度)数字1;
//设置初始参数
如果(回答==是){
//设置并输入更多参数
如果((int)number3==number3){
//输出语句
System.out.println(“输入x*”+number1+“=”+number2+“:”)的值;
//接受用户输入
int userinput=myScanner.nextInt();
//设置参数
if(userinput==number3){
//输出语句
System.out.println(“您的答案是正确的!”);
}
//回应
否则{
//输出语句
System.out.println(“实际上,+number3+”是正确答案。”);
}
}
//设置参数
如果((int)number3!=number3){
System.out.println(“实际上,+number1+”不是“+number2+”的因子”);
}
}
//设置新参数
如果(答案==否){
//设置参数
如果((int)number3==number3){
//输出语句
System.out.println(“实际上,+number1+”是“+number2+”的一个因子”);
}
//答复声明
否则{
//输出语句
System.out.println(“您的答案是正确的!”);
}
}
}
}

另一个字符串比较:)

应该是

  if (answer.equals(yes)){

使用
equals()
方法检查字符串相等性
=
运算符只检查两个引用变量是否引用同一个字符串对象。

作为建议,除了字符串比较之外,我还想补充一点,您可以将变量'number3'声明为双精度,并在if子句中调用方法intValue(),而不是将其强制转换为int,因此类似于

Double number3 = (double)number2 / (double)number1;
....
if (number3.intValue() == number3) {....}   //instead of if ((int)number3 == number3) 
Double number3 = (double)number2 / (double)number1;
....
if (number3.intValue() == number3) {....}   //instead of if ((int)number3 == number3)