2013-08-30 61 views
10

私のコードではエラーは発生しませんが、最小値と最大値は表示されません。コードは:Javaの配列の最小値と最大値

Scanner input = new Scanner(System.in); 

int array[] = new int[10]; 

System.out.println("Enter the numbers now."); 

for (int i = 0; i < array.length; i++) { 
    int next = input.nextInt(); 
    // sentineil that will stop loop when 999 is entered 
    if (next == 999) { 
     break; 
    } 
    array[i] = next; 
    // get biggest number 
    getMaxValue(array); 
    // get smallest number 
    getMinValue(array); 
} 

System.out.println("These are the numbers you have entered."); 
printArray(array); 


// getting the maximum value 
public static int getMaxValue(int[] array) { 
    int maxValue = array[0]; 
    for (int i = 1; i < array.length; i++) { 
     if (array[i] > maxValue) { 
      maxValue = array[i]; 
     } 
    } 
    return maxValue; 
} 

// getting the miniumum value 
public static int getMinValue(int[] array) { 
    int minValue = array[0]; 
    for (int i = 1; i < array.length; i++) { 
     if (array[i] < minValue) { 
      minValue = array[i]; 
     } 
    } 
    return minValue; 
} 

//this method prints the elements in an array...... 
//if this case is true, then that's enough to prove to you that the user input has //been stored in an array!!!!!!! 
public static void printArray(int arr[]) { 
    int n = arr.length; 

    for (int i = 0; i < n; i++) { 
     System.out.print(arr[i] + " "); 
    } 
} 

私はsystem.out.println()を表示する必要がありますか?返品は必要ですか?

+0

もちろん番号を印刷する必要があります。好ましくは、それを呼び出す場所です。そして、forループの外側にある2つのメソッドを呼び出します。 –

答えて

15
getMaxValue(array); 
// get smallest number 
getMinValue(array); 

返された値は使用していませんが、メソッドを呼び出しています。

System.out.println(getMaxValue(array)); 
System.out.println(getMinValue(array)); 
+0

ありがとう!ちょうど私が必要なもの! – user2673161

3

あなただけの最小/最大値を捨てる:

// get biggest number 
    getMaxValue(array); // <- getMaxValue returns value, which is ignored 
    // get smallest number 
    getMinValue(array); // <- getMinValue returns value, which is ignored as well 

あなたはここに2つのミスをやっている

... 
    array[i] = next; 

    System.out.print("Max value = "); 
    System.out.println(getMaxValue(array)); // <- Print out getMaxValue value 

    System.out.print("Min value = "); 
    System.out.println(getMinValue(array)); // <- Print out getMinValue value 

    ... 
3

ような何かを行うことができます。
1.配列の初期化が完了する前にgetMaxValue(),getMinValue()メソッドを呼び出します。
2. getMaxValue(),getMinValue()メソッドによって返された戻り値を格納しません。
ので、このコードは、あなたの最大

for (int i = 0 ; i < array.length; i++) 
    { 
     int next = input.nextInt(); 
     // sentineil that will stop loop when 999 is entered 
     if (next == 999) 
     break; 
     array[i] = next; 
    } 
    // get biggest number 
    int maxValue = getMaxValue(array); 
    System.out.println(maxValue); 

    // get smallest number 
    int minValue = getMinValue(array); 
    System.out.println(minValue); 
1

しようと、最低限の方法は

権利であるが、あなたがコンソールにint型印刷されません!心と体で

と...多分、より良い場所の変更(最大値、最小値)メソッド

今(最大値、最小値)の方法。それはちょうど私がこのコード

for (int i = 0 ; i < array.length; i++) { 
     int next = input.nextInt(); 
     // sentineil that will stop loop when 999 is entered 
     if (next == 999) 
     break; 
     array[i] = next; 
} 
System.out.println("max Value : " + getMaxValue(array)); 
System.out.println("min Value : " + getMinValue(array)); 
System.out.println("These are the numbers you have entered."); 
printArray(array); 
1

はいあなたはSystem.out.printlnを使用する必要があるの変更をお勧め1つのコール

を必要とし..必要はないです。しかし、値を入力するたびに最小値と最大値を取得しており、早期に値が破損した場合は要素数を追跡しません。

試してみてください。

for (int i = 0 ; i < array.length; i++) { 
     int next = input.nextInt(); 
     // sentineil that will stop loop when 999 is entered 
     if (next == 999) 
      break; 

     array[i] = next; 
} 
int length = i; 
// get biggest number 
int large = getMaxValue(array, length); 
// get smallest number 
int small = getMinValue(array, length); 

// actually print 
System.out.println("Max: " + large + " Min: " + small); 

次にあなたが最小値と最大値を決定し、印刷する方法に長さを渡す必要があります。これをしないと、フィールドの残りの部分は0になり、適切な最小値と最大値が崩れる可能性があります。

11

あなたの方法でこれをやりたくない場合は、これも試すことができます。

Arrays.sort(arr); 
    System.out.println("Min value "+arr[0]); 
    System.out.println("Max value "+arr[arr.length-1]); 
+9

ソーティングはO(n * log(n))であり、最小値/最大値の求め方はO(n)です。 –

1

ここでは、最大値と最小値を印刷していません。 getMaxValメソッドとgetMin valメソッドの最大値と最小値を出力します。これが出力です。

Enter the numbers now. 
5 
Max: 5 
Min: 0 
3 
Max: 5 
Min: 0 
7 
Max: 7 
Min: 0 
3 
Max: 7 
Min: 0 
90 
Max: 90 
Min: 0 
43 
Max: 90 
Min: 0 
100 
Max: 100 
Min: 0 
45 
Max: 100 
Min: 0 
23 
Max: 100 
Min: 0 
22 
Max: 100 
Min: 3 
These are the numbers you have entered. 
5 3 7 3 90 43 100 45 23 22 

Also when you are declaring an array, it has all 0s initially.

4

私見最も簡単な解決策の1つは次のとおりです。 - ここ

//MIN NUMBER 
Collections.sort(listOfNumbers); 
listOfNumbers.get(0); 

//MAX NUMBER 
Collections.sort(listOfNumbers); 
Collections.reverse(listOfNumbers); 
listOfNumbers.get(0); 
5

は、アレイ内の最小値と最大値を見つけるための作業コードです。私はあなたがそれが役に立つでしょう願っています:

import java.util.Random; 
import java.util.Scanner; 
public class FindMin { 
    public static void main(String[] args){ 
     System.out.println("Main Method Started"); 
     Scanner in = new Scanner(System.in); 
     System.out.println("Enter the size of the arr"); 
     int size = in.nextInt(); 
     System.out.println("Enter the maximum value of the arr"); 
     int max = in.nextInt(); 
     int [] arr = initializeArr(max, size); 
     print(arr); 
     findMinMax(arr); 
     System.out.println("Main Method Ended"); 
    } 
    public static void print(int[] arr){ 
     for(int val:arr){ 
      System.out.print(val + " "); 
     } 
     System.out.println(); 
    } 
    public static int[] initializeArr(int max,int size){ 
     Random random = new Random(); 
     int [] arr = new int[size]; 
     for(int ii=0;ii<arr.length;ii++){ 
      arr[ii]=random.nextInt(max); 
     } 
     return arr; 
    } 
    public static void findMinMax(int[] arr){ 
     int min=arr[0]; 
     int max=arr[0]; 
     for(int ii=0;ii<arr.length;ii++){ 
      if(arr[ii]<min){ 
       min=arr[ii]; 
      } 
      else if(arr[ii]>max){ 
       max=arr[ii]; 
      } 
     } 
     System.out.println("The minimum in the arr::"+min); 
     System.out.println("The maximum in the arr::"+max); 
    } 
} 
0
import java.util.*; 
class Maxmin 
{ 
    public static void main(String args[]) 
    { 
     int[] arr = new int[10]; 
     Scanner in = new Scanner(System.in); 
     int i, min=0, max=0; 
     for(i=0; i<=arr.length; i++) 
     { 
      System.out.print("Enter any number: "); 
      arr[i] = in.nextInt();   
     } 
     min = arr[0]; 
     for(i=0; i<=9; i++) 
     { 
      if(arr[i] > max) 
      { 
       max = arr[i]; 
      } 
      if(arr[i] < min) 
      { 
       min = arr[i]; 
      } 
     } 
     System.out.println("Maximum is: " + max); 
     System.out.println("Minimum is: " + min); 
    } 
} 
+1

このエラーを出しているので動作しません: スレッド "main"の例外java.lang.ArrayIndexOutOfBoundsException –

1

// Javaで

import java.util.Scanner; 
import java.util.*; 
public class MaxMin_WoutSort { 
public static void main(String args[]) 
    { 
     int n,max=Integer.MIN_VALUE,min=Integer.MAX_VALUE; 
     System.out.println("Enter the number of elements: "); 
     Scanner sc = new Scanner(System.in); 

     int[] arr = new int[sc.nextInt()]; //U can't say static or dynamic. 
             //UnWrapping object sc to int value;sc.nextInt() 
     System.out.println("Enter the elements: "); 
     for(int i=0;i<arr.length;i++)  //Loop for entering values in array 
     { 
      int next = sc.nextInt(); 
      arr[i] = next; 
     } 
     for(int j=0;j<arr.length;j++) 
    { 
      if(arr[j]>max)    //Maximum Condition 
      max = arr[j]; 
      else if(arr[j]<min)   //Minimum Condition 
       min = arr[j]; 
    } 
    System.out.println("Highest Value in array: " +max); 
    System.out.println("Smallest Value in array: "+min); 

} 
} 
0

をソートすることなく、配列内の最大値と最小値を見つけるために、私はあなたと同じコードを更新したとコードを比較してみてくださいあなたのオリジナルコード:

public class Help { 

public static void main(String args[]){ 
    Scanner input = new Scanner(System.in); 

    int array[] = new int[10]; 

    System.out.println("Enter the numbers now."); 

    for (int i = 0; i < array.length; i++) { 
     int next = input.nextInt(); 
     // sentineil that will stop loop when 999 is entered 
     if (next == 999) { 
      break; 
     } 
     array[i] = next; 
    } 

    System.out.println("These are the numbers you have entered."); 
    printArray(array); 

    // get biggest number 
    System.out.println("Maximum: "+getMaxValue(array)); 
    // get smallest number 
    System.out.println("Minimum: "+getMinValue(array)); 
} 

// getting the maximum value 
public static int getMaxValue(int[] array) { 
    int maxValue = array[0]; 
    for (int i = 1; i < array.length; i++) { 
     if (array[i] > maxValue) { 
      maxValue = array[i]; 
     } 
    } 
    return maxValue; 
} 

// getting the miniumum value 
public static int getMinValue(int[] array) { 
    int minValue = array[0]; 
    for (int i = 1; i < array.length; i++) { 
     if (array[i] < minValue) { 
      minValue = array[i]; 
     } 
    } 
    return minValue; 
} 

//this method prints the elements in an array...... 
//if this case is true, then that's enough to prove to you that the user input has //been stored in an array!!!!!!! 
public static void printArray(int arr[]) { 
    int n = arr.length; 

    for (int i = 0; i < n; i++) { 
     System.out.print(arr[i] + " "); 
    } 
} 
} 
関連する問題