2017-10-14 2 views
0

ich Scanner in Java verwendet und wenn ich zwischen 1-Gradebook und 2- ausscheidende Noten wählen) es braucht zwei Eingabe statt einer, und wenn die Schleife beginnt es addiert die zweite Eingabe der Summefügt die Nummer vor der Eingabe der Klasse

import java.util.Scanner; 

public class BarrogoMidtermExam { 


    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     String Myname; 
     Scanner mname=new Scanner(System.in); 
     System.out.println("Enter name: "); 
     Myname=mname.nextLine(); 

     System.out.print("Gradebook Type(1- Gradebook, 2-Exclude Failing grades): "); 
     Scanner gradebook = new Scanner(System.in); 
     int i=gradebook.nextInt(); 

     if (i==1) 
     { 

      Scanner grade=new Scanner(System.in); 
      int average=0; 
      int total=0; 
      int g = grade.nextInt(); 
      String outputString = ""; 
      while (g !=0) 
      { 
       outputString += g + " "; 
       total +=g; 
       average /= total; 

       System.out.println("enter grade (enter 0 to stop entering grade): "); 
      g = grade.nextInt(); 

      } 
      System.out.println(Myname); 
      System.out.println("Entered Number:\t" + outputString); 
      System.out.println("The Sum:\t\t" + total); 
     } 




    } 
} 
+1

Was ist das Problem? – MCMastery

+1

Erstellen Sie keinen neuen 'Scanner' bei jeder Eingabe. Erstelle ** einen ** 'Scanner' und verwende ihn ** jedesmal ** wenn du Eingaben benötigst. –

Antwort

0

Das Problem ist, dass, wenn Sie int g = grade.nextInt() initialisieren Sie fragen tatsächlich der Benutzer einen Wert einzugeben, weshalb Ihr Programm ist „fragt“ zweimal, bevor sie in die Schleife zu gehen, wo Noten eingegeben werden und anschließend, was Wert war zugewiesen zu g endet als Teil des Durchschnitts.

// Scanner grade=new Scanner(System.in);// no need to create another scanner 
int total=0; 
int g = 0; 
String outputString = ""; 
while(true) { // Create an infinite loop 
    System.out.println("enter grade (enter 0 to stop entering grade): "); 
    g = mname.nextInt(); 
    if(g == 0) { // Break from the infinite loop if the user entered 0 
     break; 
    } 
    outputString += g + " "; 
    total +=g; 
} 
0

Ich bin mir nicht ganz sicher, was Sie fragen, aber in Ihrem if-Anweisung, müssen Sie diesen Code ein:: Sie können Ihren Code wie folgt ändern

Scanner grade=new Scanner(System.in); 
int g = grade.nextInt(); 

das, dass Ihre Variable bedeutet, g fragt nach einer Eingabe vom Benutzer, und dann gibt es eine weitere in Ihrer while-Schleife, die innerhalb Ihrer if-Anweisung ist, die auch den Benutzer bittet, einige Werte für g einzugeben.

Sie brauchen nicht mehrere Scanner in Ihrem Programm. Eins reicht. Neben von einer while-Schleife verwenden, können Sie auch eine für Ihren Code wie folgt for-Schleife:

int average=0; 
int total=0; 
int g; 
String outputString = ""; 

// I'm asking the user how many grades do they want to enter 
System.out.print("Enter the number of Grades you want in your Gradebook:"); 
int n = mname.nextInt(); 

for(int j = 0; j < n; j++){ 
    System.out.println("Enter grade: "); 
    g = mname.nextInt(); 
    outputString += g + " "; 
    total +=g; 
    average = total/n; 
    } 
System.out.println(Myname); 
System.out.println("Entered Number:\t" + outputString); 
System.out.println("The Sum:\t\t" + total); 

Auch ursprünglich hatte man:

average /= total; 

dies wird Ihnen immer 0. geben So Sie müssten Ihre variable Summe auf die Anzahl der eingegebenen Noten n verteilen, um den Durchschnitt zu erhalten.

Wenn Sie diesen Code in einer while-Schleife möchten, ist die obige Referenz eine gute, aber ich glaube, dass Sie einen Zähler benötigen, um die Anzahl der eingegebenen Noten zu verfolgen, um den Durchschnitt zu erhalten.

Verwandte Themen