2017-08-17 6 views
0
package HW2_Min_Max; 

import java.util.Scanner; 

public class HW2_Min_Max { 

    public static void main(String[] args) { 

     Scanner myScanner = new Scanner(System.in); 

     System.out.println("Please input a positive interger that indicates number of positive intergers "); 

     int number = myScanner.nextInt(); 

     while (number <= 0) { 
      System.out.println("Please input interger"); 
      number = myScanner.nextInt(); 
     } 

     int i=1; //i is to store current iteration 
     int sum=0; //sum is to store sum of the input 
     int x; //x is to store the user input 

     while (i <= number){ 
      System.out.println("Please input a positive interger "); 
      x = myScanner.nextInt(); 
      sum = sum + x; 
      i++; 
     } 
     int average = sum/number; 

     System.out.println("The average is " + average); 

     int max = Integer.MIN_VALUE; 
     int min = Integer.MAX_VALUE; 

     if (number < min){ 
      min = number; 
     } 

     if (number > max) { 
      max = number; 
     } 
     System.out.println("The minimum value is " + min); 
     System.out.print("and the maximum value is" + max); 
     } 
    } 
} 

1.これは、Netbeansの最後のブレースで私の問題を解決しています。 "クラス、インターフェイス、または列挙型の期待"しかし、私は理由を考えていない。私はJavaを使った非常に新鮮な初心者ですので、私の無知を許してください。「n」個のユーザー入力数の平均を求めるときにMin&maxを検索しようとするとエラーが発生する

+1

最後のブレースは実際には必要ないようです。 '{'の数は '}'の数と同じでなければならないことを忘れないでください。 – dat3450

+0

正しい、一貫性のあるインデントはあなたの友人です。 –

+0

さて、私はコードを実行させる問題を修正しましたが、実際の出力に問題がありますか?私は5正の整数を入力し、平均は常に右に出てくるが、最大と最小の出力が間違っている、私はなぜか分からないのですか? –

答えて

-1

これで問題なく動作します。私はそれにいくつかの変更を加えました。親切に考えてみてください。私はそれが助けてくれることを望む。ここで

Scanner myScanner = new Scanner(System.in); 

    System.out.println("Please input a positive interger that indicates number of positive intergers "); 


    int number = myScanner.nextInt(); 

    while (number <= 0) { 
     System.out.println("Please input interger"); 
     number = myScanner.nextInt(); 
    } 
    int[] arr = new int[number]; // Store values in array 
    int i=0; //i is to store current iteration 
    int sum=0; //sum is to store sum of the input 
    int x; //x is to store the user input 
    int max = 0; 
    int min = 0; 
     for(i=0;i<number;i++){ 
     System.out.println("Please input a positive interger "); 
     arr[i] = myScanner.nextInt(); 
     sum = sum + arr[i]; 

    } 
    int average = sum/number; 

    System.out.println("The average is " + average); 

    // Put initial values in min and max for comparing 
    min =arr[0]; 
    max = arr[0]; 
for(i=1;i<number;i++) 
{ 
    // Compare if values is less than arr[i] 
    if (arr[i] < min){ 
     min = arr[i]; 
    } 
// Compare if values is greater than arr[i] 
    if (arr[i] > max) { 
     max = arr[i]; 
    } 
} 
    System.out.print("The minimum value is " + min); 
    System.out.println(" and the maximum value is " + max); 

} 
} 

が出力されます:最初の部分については

enter image description here

0

、私はあなたが数字の数をテストするためにdo-whileループを使用することをお勧めします。同様に、

int number; 
do { 
    System.out.println("Please input a positive integer that " 
      + "indicates number of positive integers "); 
    number = myScanner.nextInt(); 
} while (number <= 0); 

は、その後、あなたはであなたのループをminmaxを設定(またはあなたが読んですべての値を保存)する必要があります。私はMath.maxMath.minを好むだろう。私も0から数えます。同様に、

int i = 0; // i is to store current iteration 
int sum = 0; // sum is to store sum of the input 
int x; // x is to store the user input 
int max = Integer.MIN_VALUE; // store the max user input 
int min = Integer.MAX_VALUE; // store the min user input 
while (i < number) { 
    System.out.println("Please input a positive integer "); 
    x = myScanner.nextInt(); 
    if (x > 0) { // make sure it's a positive integer 
     min = Math.min(min, x); 
     max = Math.max(max, x); 
     sum += x; 
     i++; 
    } 
} 
int average = sum/number; 
System.out.println("The average is " + average); 
System.out.println("The minimum value is " + min); 
System.out.println("and the maximum value is " + max); 
関連する問題