2016-07-21 9 views
1

Immer wenn ich meinen kompilierten Code ausführen, zeigt es die größte Zahl, aber es zeigt nicht die zweitgrößte Zahl korrekt an. Hier ist mein Code:Java-Programm zum Drucken der beiden größten Zahlen ein Benutzereingaben

package twoLargestNumbers; 
import java.util.Scanner; 
//find two largest numbers 
public class twoLargestNumbers { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Scanner input=new Scanner(System.in); 
    int num; 


    int counter=0; 
    int largest=0;//largest 
    int second=0;//second largest 
    System.out.println("Enter number:"); 
    num=input.nextInt(); 

    while(counter<5){ 


     num=input.nextInt(); 

     if(num>largest){ 

      second=largest;//store largest to second largest 
      largest=num;//store largest to inputted number 
      } 


     else{ 

     if(num>second) 
      second=num;//store second number to inputed number 
     } 
     counter=counter+1; 

    } 



    System.out.println("largest number is "+largest); 

    System.out.println("and second largest number is "+second); 



} 

} 

Was mache ich falsch? Ich lese und lese diesen Code und kann nicht herausfinden, was der Fehler ist.

+0

Die erste Zahl = input.nextInt(); liest eine Nummer und verwirft sie. Entferne diese Zeile. – JimmyB

+1

Vielen Dank. Das hat es geschafft :) –

Antwort

0

Entfernen Sie die Zahl num = input.nextInt(), bevor die while-Schleife gestartet wird.

Der erste Eingang wird aufgerufen und dann sofort nach dem "ersten" Eingang in der while-Methode aufgerufen.

Ein paar andere Tipps, normalerweise für eine definierte Länge der Schleife (in diesem Fall 5) würden Sie eine for-Schleife verwenden, um Ihre Absicht ein wenig mehr zu zeigen.

Sie können auch Zähler erhöhen tun: counter ++; oder Zähler + = 1;

Angenommen, die Absicht Ihres Programms ist es, nach 5 Zahlen der Eingabe zu fragen und dann die größten zwei anzuzeigen, das sollte alles helfen. Hoffe es hat getan.

Verwandte Themen