Java 如何使此代码更简单?另外,如何检查输入是否为int?
嗨,我是Java的初学者。如何使bais计算器更简单? 另外,如果num1或num2不是整数,我希望用户得到一个错误。我怎么能这么做 我已经尝试过parseint和scanner.hasnextint,但无法让它们工作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
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;
}
}
}