[英]Find a maximum and minimum value using for loop
我試圖從用戶的輸入中獲取10個整數,並使用for循環找到最小值和最大值。 但是我的最終打印語句只是打印輸入的數字列表。 我迷路了。
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
double a = 0;
double max = 0;
double min = 0;
System.out.print("Enter ten floating points: \n");
for(a=0; a <10; a++) {
a=scan.nextDouble();
if(a == 0) {
min=a;
max=a;
}
else if(a < min) {
min=a;
}
else if (a > max){
max=a;
}
}
System.out.println("Minimum value: " +min);
System.out.println("Maximum value: " +max);
}
問題在您的for循環中將其更改為
for (int x = 0; x < 10; x++) {
還有另一個問題,你需要改變
if(a == 0){
至
if (x == 0) {
首先,由於您使用與計數器相同的變量a
和存儲用戶輸入的變量,因此代碼不應正確運行。 您應該使用兩個不同的變量。
第二個聲明您的變量,該變量將用戶的輸入存儲在循環內,否則它可能會保留上一個循環中的值。
第三,當用戶輸入數字0時, if(a == 0)
條件將重置min
和max
。這不是您想要的。
最后,您不應該像這樣初始化max / min。 通過將min定義為0,如果用戶僅輸入正數,則min將為0,但用戶從未輸入0。您可以在用戶的第一項輸入中將其初始化。
看起來應該像這樣:
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("Enter ten floating points: \n");
double tmp = scan.nextDouble(); //read first number from user
double max = tmp; //intialize with the first input
double min = tmp;
for(int i=0; i <9; i++) { //from 0 to 8, 9 numbers since the first has already been read
double a = scan.nextDouble(); //at every loop read a number from the input
if(a < min) {
min=a;
}
//removed else since max and min are independant
if (a > max) {
max=a;
}
}
System.out.println("Minimum value: " +min);
System.out.println("Maximum value: " +max);
}
嘗試這個
Scanner scan=new Scanner(System.in);
int maximum = Integer.MIN_VALUE;
int minimum = Integer.MAX_VALUE;
for( int i=0; i<10 && scan.hasNextInt(); i++ ) {
int next = scan.nextInt();
maximum = Math.max( next, maximum);
minimum = Math.min( next, minimum);
}
System.out.println("Found maximum :"+maximum+", minimum:"+minimum);
scan.close();
首先,我們創建掃描儀。 接下來,我們為您的最大值設置一個值-由於整數可以為負,因此我們不能使用0,而必須使用最小的整數。 最低限度相同。
在for循環中,我們必須確保在10次迭代后終止輸入循環,或者如果輸入流中不再有int循環,則終止循環。
接下來,我們使用數學函數max找出最大的數字-先前找到的最大數,或Scanner中的下一個整數。 最少也一樣。
最后,請記住關閉掃描儀,以避免資源泄漏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.