英文:
Not taking user input and jumping to else clause in a while loop
问题
我是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.equals("Y") || ans.equals("y")) {
// do nothing
}
else if (ans.equals("N") || ans.equals("n")){
break;
}
else {
System.out.println("Invalid input");
break;
}
}
}
}
英文:
Im a beginner in JAVA and I have been trying to create a simple calculator program. I am facing a problem in the while loop where the loop does not wait for my input "ans" and directly jumps to the else clause
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;
}
}
}
}
答案1
得分: 1
ob.nextLine()将换行符视为其下一个值,因此ans被设置为无效字符。
将ob.nextLine()更改为ob.next()。
另外,对于Java,您应该使用string.equals("another string"),所以将您的字母检查更改为以下内容:
if (ans.equals("Y") || ans.equals("y")) {
// 什么都不做
}
else if (ans.equals("N") || ans.equals("n")){
break;
}
英文:
ob.nextLine() is taking the newline character as its next value, so ans is set to an invalid character.
change ob.nextLine() to ob.next().
Also, for Java, you should use string.equals("another string") so change your letter checking to this:
if (ans.equals("Y") || ans.equals("y") ) {
// do nothing
}
else if (ans.equals("N") || ans.equals("n")){
break;
}
答案2
得分: 0
public static void main(String[] args){
Scanner ob = new Scanner(System.in);
while(true){
System.out.print("输入一个数字: ");
int num = ob.nextInt();
System.out.print("输入另一个数字: ");
int num2 = ob.nextInt();
System.out.println(num + " 和 " + num2 + " 的和为 " + (num + num2));
System.out.println(num + " 和 " + num2 + " 的余数为 " + (num - num2));
System.out.println(num + " 和 " + num2 + " 的乘积为 " + (num * num2));
float answer= (float) num / num2;
System.out.println(num + " 和 " + num2 + " 的商为 " + answer);
System.out.print("再试一次? (Y/N)");
ob.nextLine();
String ans = ob.nextLine();
if (ans.equalsIgnoreCase("y")) {
// 什么都不做
} else if (ans.equalsIgnoreCase("n")){
break;
} else {
System.out.println("无效输入");
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;
}
}
}
You should enter ob.nextLine() to clear your input for other inputs you may enter.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论