這個問題在這里已經有了答案: 如何使用 java.util.Scanner 從 System.in 正確讀取用戶輸入并對其采取行動? (1 個回答) 8 小時前關閉。
我對 Java 相當陌生,但我正在處理一項任務,我有點迷茫。宣告了一個陣列,它的元素只能是大于 0 且小于 100 的數字。如果我運行我的代碼,它會要求我輸入陣列大小,然后是陣列值,但它接受 100 及以上的值。
如果輸入小于零或大于等于 100,我如何回傳類似“請僅輸入 >0 和 <100 的值?
package arrays;
import java.util.Scanner;
import java.util.stream.IntStream;
public class ArrayAssignment {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
System.out.println("Enter array size: ");
int size = s.nextInt();
int[] Array = IntStream.rangeClosed(1, 99).toArray();
System.out.println("Enter array values: ");
for (int i = 0; i < size; i ) {
int value = s.nextInt();
Array[i] = value;
}
int length = Array.length;
int sum = 0;
for (int i = 0; i < Array.length; i ) {
sum = Array[i];
}
double average = sum / length;
System.out.println("Average of array: " average);
}
}
運行代碼:輸入陣列大小:10
輸入陣列值:
12 34 12 1 2 4 1 1100 10 14
陣列平均值:61.0
uj5u.com熱心網友回復:
在無限回圈中不斷檢查輸入,直到用戶輸入有效輸入。
package arrays;
import java.util.Scanner;
import java.util.stream.IntStream;
public class ArrayAssignment {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
while (true) {
System.out.println("Enter array size: ");
int size = s.nextInt();
if (size < 100 && size > 0) {
break;
} else {
System.out.println("Please enter values only >0 and <100");
}
}
int[] Array = IntStream.rangeClosed(1, 99).toArray();
System.out.println("Enter array values: ");
for (int i = 0; i < size; i ) {
int value = s.nextInt();
Array[i] = value;
}
int length = Array.length;
int sum = 0;
for (int i = 0; i < Array.length; i ) {
sum = Array[i];
}
double average = sum / length;
System.out.println("Average of array: " average);
}
}
uj5u.com熱心網友回復:
您可以通過修改for回圈來只允許特定輸入,使其不包含i 在定義中,而是僅在給出有效值時才增加計數器。
這個回圈現在看起來像這樣:
for (int i = 0; i < size;) {
System.out.println("Enter array values: ");
int value = s.nextInt();
if (value > 100 || value <= 0) {
System.out.println("Please enter values greater than 0 and less than or equal to 100.");
}
else {
Array[i] = value;
i ;
}
}
請注意,您也可以將其更改為do-while回圈或while回圈并獲得相同的結果(那些可能更適合這種情況)。此外,當輸入achar或時,這仍然會中斷String,因為我沒有為這些情況添加處理。
額外說明:
此外,我注意到您正在使用double average = sum / length;which 將執行整數除法,因此您永遠不會有小數結果。您可以通過在使用以下內容進行分割之前強制轉換sum為來解決此問題double:
double average = (double) sum / length;
最后要看的是你的int[] array = IntStream.rangeClosed(1, 99).toArray();線路。我不確定您是否打算int[] array = IntStream.rangeClosed(1, size).toArray();改為根據用戶輸入的大小創建一個陣列,但您可能還需要更改它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/371800.html
下一篇:Python根據key對陣列求和
