2016-03-30 9 views
0

Hey, -1 ile sonlandırılmış değer sonlandırılırken kullanıcı girişinden minimum ve maksimum değeri çıkarmaya çalışıyorum. Giriş için minimum değer hesaplarken -1 değerini nasıl göz ardı etmemek dışında her şeyi nasıl yapacağımı anlıyorum.döngü sonlandırma numarası hariç tutulduğunda kullanıcı girdisinden minimum değeri hesapla (-1)

int value = 0; 
    int max = value; 
    int min = max; 

    Scanner scan = new Scanner(System.in); 

    while (value != -1) { 
     System.out.print("Value: "); 
     value = scan.nextInt(); 
     if (min > value) { 
     min = value;  } 

     if (max < value) { 
      max = value; } 
    } 

    System.out.println("Min = " + min); 
    System.out.println("Min = " + min); 

nasıl -1 hiçe ederken minimum değeri hesaplayabilirsiniz: Ben bugüne kadar var kod?

Teşekkürler.

cevap

1

Sen hiç bitmeyen bir döngü içine döngüyü açmak ve bir break eklemek sonlandırma numarası tespit edildiğinde: Ayrıca sabit

Scanner scan = new Scanner(System.in); 

int max = Integer.MIN_VALUE; 
int min = Integer.MAX_VALUE; 
for (;;) { // never-ending loop 
    System.out.print("Value: "); 
    if (! scan.hasNextInt()) { 
     System.out.println("** Invalid input **"); 
     scan.nextLine(); // discard invalid input 
     continue; // loop back to prompt again 
    } 
    int value = scan.nextInt(); 
    if (value == -1) // termination number 
     break; 
    if (value < min) 
     min = value; 
    else if (value > max) 
     max = value; 
} 
System.out.println("Min = " + min); 
System.out.println("Max = " + max); 

: Aksi min ve max (min ait

  • Başlatma olacak (her zaman 0 olmalıdır)
  • Scanner girişinin doğrulanması (bu nedenle program, Kötü girişine iyon) max ait
  • Baskı (
  • Girinti (böylece kod yapısı
+0

yerine bir süre içinde döngü için boş kullanmak herhangi bir neden) İnsan okuyucularına açıkça görülebilir) iki kez min basıyordum (doğru) döngü? Her iki deyimi de gördüm ve her zaman muhtemelen sadece programcı tercihi olduğunu düşündüm. –

+0

@AustinD Tamamen programcı tercihi. Http://stackoverflow.com/questions/8880870/java-for-vs-whiletrue sayfasına bakın. – Andreas

0

if (min > value) ile başlayan satırdan hemen önce if (value == -1) break;'u ekleyin. Bu, terminalin (-1) karakteri okunduğunda döngünün kesilmesine neden olur.

Netlik için döngü koşulunuzu while(true) olarak değiştirebilirsiniz. Bu durum için oldukça yaygın bir deyim.

İlgili konular