我创建了两个获取它们的Scanner对象。但是当输入完成时,如果/ else代码不起作用。问题出在哪里?主要问题是" InputMismatchException"。我在用户输入除双精度值之外的值时,程序会显示他"请输入正确的格式"。我用这两个输入来处理这个异常。什么是正确的代码?你能解释我并写出正确的代码吗?tnx。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
}
}
答案 0 :(得分:0)
问题:您正在阅读iqInput.nextDouble();
和termMeanInput.nextDouble();
的值。但是,您不是将它们的值存储在任何变量中,以便在if语句中使用它。
试试这个:
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
try {
System.out.print("Please enter your IQ: ");
Double IQ = s.nextDouble(); // Modification
System.out.print("Please enter your term mean: ");
Double termMean = s.nextDouble();
if(IQ<100 && termMean<17) {
System.out.println("You have no discount");
} else if(IQ>110 && termMean>18) {
System.out.println("You got 30 percent discount.");
} else {
System.out.println("You got 20 percent discount.");
}
}
catch(InputMismatchException e) {
System.out.println("Please enter the right input format.");
}
}
<强>修改:强>
添加了Double IQ = iqInput.nextDouble(); and Double termMean = termMeanInput.nextDouble();
。
在if-else语句中使用IQ and termMean
的值。
答案 1 :(得分:0)
我认为这是因为你在条件下调用扫描方法。
您是否可以使用一台扫描仪并将扫描值放入变量?
答案 2 :(得分:0)
如果我们使用一个扫描仪而不是2个,并存储输入,
import java.util.Scanner;
public class NestedIf {
public static void main(String[] args) {
Double iq, mean;
Scanner iqInput=new Scanner(System.in);
System.out.println("Please enter your IQ: ");
iq = iqInput.nextDouble();
System.out.println("Please enter your term mean: ");
mean = iqInput.nextDouble();
if(iq != null && mean != null){
if(iq>110 && mean>18){
System.out.println("You got 30 percent discount.");
}else if(iq>100 && mean>17){
System.out.println("You got 20 percent discount.");
}else if(iq<100 && mean<17){
System.out.println("You have no discount");
}
}else{
System.out.println("Please enter the right format");
}
}
}