2016-04-05 25 views
1

Bu nedenle, kullanıcılar için 100'den fazla tamsayıya kadar giriş yapmak için 0 ile işaretleme seçeneği ile önceden belirlenmiş bir dizi listesi oluşturan bir kod oluşturma görevini üstlendim Bir kez onların girişleri ile bitti. Ancak, en düşük değer için çağrı yapmaya çalışırken, sadece 0 değerini döndürür. Düzgün biçimde nasıl biçimlendiririm, bu kullanıcı tarafından girilen dizi listesindeki tüm değere göre karşılaştırır? Alabileceğim herhangi bir yardımı takdir ediyorum! Hangi alanlarda sorularım olduğunu veya hatanın olduğuna inandığım yerleri göstermek için tarafa yorum ekledim. minimum bulurKullanıcı tarafından girilen bir dizideki (Java) minimum ve maksimum değerlerin bulunması

public static void main(String[] args) { 

Scanner TextIO = new Scanner(System.in); 
    String calc; 

      double[] numbers2; //An array for storing double values. 
      int[] numbers; // An array for storing the int values. 
      int count;  // The number of numbers saved in the array. 
      int num;  // One of the numbers input by the user. 
      int max; 
      int min; 

/* Initialize the summation and counting variables. */ 

      numbers2 = new double[100]; // Space for 100 doubles. 
      numbers = new int[100];  // Space for 100 ints. 
      count = 0;     // No numbers have been saved 
      max = Integer.MIN_VALUE; //Properly initialized? 
      min = Integer.MAX_VALUE; //Properly initialized? 

/*Start of min method. */ 

if (calc.equals("min")){ 
    System.out.println("Enter up to 100 positive integers; 

    while (true) { // Get the numbers and put them in the array. 
     System.out.print("-> "); 
     num = TextIO.nextInt(); 

    if (num <= 0) { 
     break; }    /*Zero marks the end of the input. All     
           have been inputted. */ 

    else { 
     numbers[count] = num; // Put num in position count. 
     count++; 
        } 

    for (int i=0; i<numbers.length;i++) { //"For" statement needed here? 
      if (numbers[i] < min) { 
       min = numbers[i];}   
             } 

    } 

     System.out.println("Your minimum is : " + min); 
    } 
}     
}     
+0

* yukarı * 100'ün üzerinde etmek - bu anlama geliyor? ?? – shmosel

+0

Sadece bir düşüncede, dizinizdeki ilk öğe olmak için min ve maks değerini atayabilirsiniz, ancak MIN ve MAX'ın da işe yarayacağını düşünüyorum. –

+0

'int [100]' 101 tamsayıya sahip bir alana sahiptir. – shmosel

cevap

2

Sizin for döngü şu anda dizinin un-başlatıldı elemanları üzerine çıkması beri (değil içine, giriş okur iken döngü sonra olmalıdır, böylece her zaman olduğu gibi bir 0 bulur minimum). Bunu yaparsanız, for döngüsünü yalnızca diziye atadığınız öğeler üzerinde yinelemelisiniz (dizilimi 0'dan sayma 1'e) ve dizinin tamamını değil.

Alternatif olarak, döngü için kaldırmak ve sadece döngü içindeyken

 if (numbers[count-1] < min) { 
      min = numbers[count-1]; 
     } 

koşulu koyabilirsiniz. Bu, girişi okuyan aynı döngüdeki minimum değeri bulacaktır. Elbette bunu yaparsanız, öğeleri bir dizide saklamanız gerekmez, böylece kodu daha da basitleştirebilirsiniz.

İşte olası bir çözüm dizi ve döngü tutar var:

while (count < numbers.length) { // avoid too many inputs 
    System.out.print("-> "); 
    num = TextIO.nextInt(); 

    if (num <= 0) { 
     break; 
    } else { 
     numbers[count] = num; 
     count++; 
    } 
} 
for (int i=0; i<count;i++) { 
    if (numbers[i] < min) { 
     min = numbers[i]; 
    }   
} 
+0

Önceden elimine edilmesi gereken bazı değişkenler Tamam, kodumu değiştirdim ama hala bana 0 değerini veriyor. Değişkenlerimi maksimum ve min için doğru şekilde başlatmamış olmanın yapmak zorunda olabileceğini düşünüyor musunuz? değişkenlerim: {max = Integer.MIN_VALUE; \t \t \t min = Tamsayı.MAX_VALUE;} – olmost21

+0

En fazla 100 pozitif tam sayı girin; sonlandırmak için 0 girin. -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10 -> 0 Minimum olup: 0 – olmost21

İlgili konular