Java 如何使此代码更简单?另外,如何检查输入是否为int?

Java 如何使此代码更简单?另外,如何检查输入是否为int?,java,Java,嗨,我是Java的初学者。如何使bais计算器更简单? 另外,如果num1或num2不是整数,我希望用户得到一个错误。我怎么能这么做 我已经尝试过parseint和scanner.hasnextint,但无法让它们工作 import java.util.Scanner; 公共课第一名{ 公共静态void main(字符串[]args){ int num1; int num2; int结果; 字符串yesorno; String yes=“yes”; 字符串op; 而(是或否,等于(是)){ Sy

嗨,我是Java的初学者。如何使bais计算器更简单? 另外,如果num1或num2不是整数,我希望用户得到一个错误。我怎么能这么做

我已经尝试过parseint和scanner.hasnextint,但无法让它们工作

import java.util.Scanner;
公共课第一名{
公共静态void main(字符串[]args){
int num1;
int num2;
int结果;
字符串yesorno;
String yes=“yes”;
字符串op;
而(是或否,等于(是)){
System.out.println(“请输入第一个数字:”);
扫描仪输入NUM1=新扫描仪(System.in);
num1=inputnum1.nextInt();
System.out.println(“请输入第二个数字:”);
扫描仪输入NUM2=新扫描仪(System.in);
num2=inputnum2.nextInt();
System.out.println(“请输入操作:”);
Scanner inputop=新扫描仪(System.in);
op=inputop.next();
字符串减号=“-”;
字符串plus=“+”;
字符串multiple=“*”;
字符串div=“/”;
而((!op.equals(减号))&&(!op.equals(加号))&&(!op.equals(倍数))&&(!op.equals(div)))
{
System.out.println(“不正确的操作,请重试”);
op=inputop.next();
}
开关(op){
格“+”:
结果=num1+num2;
System.out.println(num1+“+”+num2+“=”+结果);
打破
案例“-”:
结果=num1-num2;
System.out.println(num1+“-”+num2+“=”+结果);
打破
案例“*”:
结果=num1*num2;
System.out.println(num1+“*”+num2+“=”+结果);
打破
案例“/:
结果=num1/num2;
系统输出打印项次(num1+“/”+num2+“=”+结果);
打破
}
System.out.println(“是否要计算其他内容?”);
扫描仪inyesorno=新扫描仪(System.in);
yesorno=inyesorno.next();
}}
}

一个需要先解决的错误:

 String yesorno;
 String yes = "yes";
 String op;
 while(yesorno.equals(yes)){
     [...]
 }

您的字符串yesorno不等于“yes”,因此while循环从一开始就不会执行

首先要检查整数,请使用try catch block
try{num=integer.parseInt(您的输入);}catch(NumberFormatException exc){//这是您的逻辑,如果它不是整数}
,在提出问题之前,您必须搜索。在像整数分解一样提问之前,您将得到大多数答案。当(yesorno.equals(yes))时,您将得到编译错误。由于您尚未初始化YesOrnobasic,while循环首先会导致编译错误。
import java.util.Scanner;

public class TopFirst {

    private static final String PLUS = "+";
    private static final String MINUS = "-";
    private static final String MULTIPLY = "*";
    private static final String DIV = "/";

    private static final Scanner INPUT = new Scanner(System.in);

    public static void main(String[] args) {

        do {

            System.out.print("Please enter the first number: ");

            int num1 = readInt();

            System.out.print("Please enter the second number: ");

            int num2 = readInt();

            System.out.print("Please enter an operator: ");

            String operator = readOperator();

            int result = countResult(num1, num2, operator);
            System.out.printf("%d %s %d = %d%n", num1, operator, num2, result);

            System.out.println("Do you want to calculate something else?");

        } while (INPUT.next().equals("yes"));
    }

    private static String readOperator() {
        String operator = INPUT.next();

        if (isCorrect(operator)) {
            return operator;
        } else {
            System.out.print("Incorrect operator, try again: ");
            return readOperator();
        }
    }

    private static int readInt() {
        try {
            return Integer.parseInt(INPUT.next());
        } catch (NumberFormatException e) {
            System.out.print("Incorrect number, try again: ");
            return readInt();
        }
    }

    private static boolean isCorrect(String operator) {
        return MINUS.equals(operator)
            || PLUS.equals(operator)
            || MULTIPLY.equals(operator)
            || DIV.equals(operator);
    }

    private static int countResult(int num1,
                                   int num2,
                                   String operator) {
        switch (operator) {
            case PLUS:
                return num1 + num2;
            case MINUS:
                return num1 - num2;
            case MULTIPLY:
                return num1 * num2;
            case DIV:
                return num1 / num2;
            default:
                return 0;
        }
    }
}