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

Java 不接受用户输入并在while循环中跳转到else子句,java,Java,我是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

我是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
被设置为无效字符

ob.nextLine()
更改为
ob.next()

另外,对于Java,您应该使用
string.equals(“另一个字符串”)
,因此将字母检查改为:

if (ans.equals("Y") || ans.equals("y") ) {
  // do nothing
}
else if (ans.equals("N") || ans.equals("n")){
  break;
}

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

您的代码是否有效您没有更新
i
value这是否回答了您的问题?另外,在用Java命名类时,您应该是CamelCase,这样ScannerProgramOr您就可以编写:
if(ans.equalsIgnoreCase(“y”)
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;
        }
    } 
}