Java 新程序员试图在代码中找到错误
我正试图找出我错在哪里。代码假设取两个随机数,找出其中一个是否是另一个的因子,并根据您的答案打印出各种结果 我不知道我哪里出错了,但由于某种原因,代码不会进入我的if语句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)
//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)