[英]infinite while loop; input validation; don't know what to do to make it read an if before input is placed what should I do?
我是编程新手,对不起错误的解释和/或错误的代码编写...
无论如何,我目前正在使用“ method overload
”进行分配,我希望能够从用户那里获得double
或int
。
我的第一个代码起作用了,所以我决定在最后一个if
语句的末尾添加一个else
,该语句检查错误的输入并重复整个代码。 问题是,尽管您第一次输入数字时代码运行良好,但是如果输入错误,它将启动while
循环,并继续重复执行代码块,无论输入内容如何。 我知道它只是忽略了if
语句,因为它们不是以前的任何形式的输入(或任何停止它的内容?)。 我需要某种方式来检查代码以获取输入,然后在声明变量类型之前检查它是整数还是双精度型...或者是否有更好的方法,请共享...如果您需要更多的知识来对此进行回复发布或执行其他操作...此处,还没有完成,如果您称其为草稿,
public class LoanRates {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
boolean x = false;
while(x = true){
System.out.println("please enter a number");
x = false;
if (in.hasNextInt()){
int rate = 0;
rate = getNumbers(rate, in);
System.out.println(rate);
break;
} else if( in.hasNextDouble()){
double rate = 0;
System.out.println("please enter a number");
rate = getNumbers(rate, in);
System.out.println(rate);
break;
}else {
System.out.print("please enter a number");}
}
System.out.print("did it work?");
}
public static double getNumbers(double rate, Scanner in){
rate =in.nextDouble();
return rate;
}
public static int getNumbers(int rate, Scanner in){
rate = in.nextInt();
return rate;
}
}
您正在使用while(x = true)
那么它始终为true
首先,您必须将x变量初始化为true 。 否则,它将不会进入while循环内boolean x = true;
尝试while(x == true)
并确保在必要时将variable x
的值更改为false
。 但是最好将double或int值传递,而不是将扫描器引用传递给getNumbers
方法
package test;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class LoanRates {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (true) {
System.out.println("Please enter a number");
String input = in.next();
try {
int rate = Integer.parseInt(input);
// you can use the rate variable and change your method to accept the input value
System.out.println(getNumbers(rate));
break;
} catch (NumberFormatException e) {
try {
double rate = Double.parseDouble(input);
// you can use the rate variable and change your method to accept the input value
System.out.println(getNumbers(rate));
break;
} catch (NumberFormatException ex) {
System.out.println("Invalid number.");
}
}
}
System.out.print("did it work?");
}
public static double getNumbers(double rate) {
// rate calculation logic
return rate;
}
public static int getNumbers(int rate) {
// rate calculation logic
return rate;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.