[英]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.