我正在嘗試製作一個程序,可以分析用戶的兩位數字。我使用了一個Scanner
對象來接受輸入,然後是一個數組組合。這是我的代碼:(如果用戶輸入56如)分析一個兩位數字並打印其個人數字的總和
class Calculate {
public static void calculate() {
Scanner br = new Scanner(System.in);
int[] c = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
int[] d = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
int sum;
int a = br.nextInt();
System.out.println("Digit is:" + a);
for (int i = 0; i < 10; i++) {
int e = 0;
if (a == ((c[i] * 10) + d[e])) {
sum = ((c[i] * 10) + d[e]);
System.out.println("First digit is:" + c[i]
+ " Second digit is:" + d[e]
+ "\n" + "Sum of digits=" + sum);
} else if (i == 9) {
i = 0;
e++;
} else if (e == 10) {
System.out.println("INVALID NO. HAS BEEN DETECTED");
}
}
}
}
我的預期輸出:
Digit is:56
First Digit:5 Second digit:6
Sum of digits=11
但是,輸出不出來正常;它採取無限輸入。像這樣:
56
Digit is:56
23
89
45
.....
而這樣,它卡在一個循環。我該如何解決這個問題?
嘗試把一個else語句在你的if/else樹,只是版畫「不應該到這裏來」或結束類似的東西。然後你知道你的邏輯不起作用。由於您稱之爲計算的方式,它可能需要無限輸入。你可以應該你的主要方法嗎?此外,你的循環非常混亂,你每次迭代都會重置'e',所以它永遠不會達到10.你最好不要改變'i'的值。 – turbo
你必須使用數組嗎?或者你可以使用'a/10'和'%10'嗎? – Pshemo
@ArunKumar有沒有必要把標題中的語言。在內部由代碼和谷歌等代表它被自動放入(谷歌標題看起來像「java - 分析一個兩位數字和打印其個人數字的總和 - java」 –