不接受用户输入并在while循环中跳转到else子句



我是JAVA的初学者,一直在尝试创建一个简单的计算器程序。我在while循环中面临一个问题,其中循环不等待我的输入";ans";并直接跳转到else子句

import java.util.Scanner;
public class scanner_program {
public static void main(String[] args)
{

Scanner ob = new Scanner(System.in);
int i = 1;
while (i==1) 
{   
System.out.print("Enter a number: ");
int num = ob.nextInt();
System.out.print("Enter another number: ");
int num2 = ob.nextInt();

System.out.println("Sum of "+num+" And "+num2+" is "+(num+num2));
System.out.println("Remainder of "+num+" And "+num2+" is "+(num-num2));
System.out.println("Product of "+num+" And "+num2+" is "+(num*num2));
float answer= (float) num/num2;
System.out.println("Quotient of "+num+" And "+num2+" is "+answer);

System.out.print("Try Again? (Y/N) ");
String ans = ob.nextLine();

if (ans=="Y" || ans=="y" ) {
// do nothing
}
else if (ans=="N" || ans=="n"){
break;
}
else {
System.out.println("Invalid input");
break;
}
}   

}
}

ob.nextLine()将换行符作为其下一个值,因此ans被设置为无效字符。

将CCD_ 3改变为CCD_。

此外,对于Java,您应该使用string.equals("another string"),因此将您的信件检查更改为:

if (ans.equals("Y") || ans.equals("y") ) {
// do nothing
}
else if (ans.equals("N") || ans.equals("n")){
break;
}
public static void main(String[] args){
Scanner ob = new Scanner(System.in);
while(true){
System.out.print("Enter a number: ");
int num = ob.nextInt();
System.out.print("Enter another number: ");
int num2 = ob.nextInt();

System.out.println("Sum of "+num+" And "+num2+" is "+(num+num2));
System.out.println("Remainder of "+num+" And "+num2+" is "+(num-num2));
System.out.println("Product of "+num+" And "+num2+" is "+(num*num2));
float answer= (float) num/num2;
System.out.println("Quotient of "+num+" And "+num2+" is "+answer);

System.out.print("Try Again? (Y/N)");
ob.nextLine();
String ans = ob.nextLine();

if (ans.equalsIgnoreCase("y")) {
// do nothing
} else if (ans.equalsIgnoreCase("n")){
break;
} else {
System.out.println("Invalid input");
break;
}
} 
}

您应该输入ob.nextLine((来清除您可能输入的其他输入。

最新更新