2016-03-29 7 views
0

Write a program using the switch statement name GradeReport that reads a grade from the user and prints the comments accordingly.Wie mache ich While-Schleife, um die Versuche zu verfolgen?

Instruction: Prompt the user to enter their grade user must be prompt to enter a numeric grade (0 to 100) if the input isn't an integer between 0 and 100, prompt the user to re-enter

Use a do loop for the re-enter of grade then if condition is not met or grade is not between 0 and 100 then prompt the user on the screen as follows ("Error: You must enter an integer between 0 and 100");”

Also incorporate a while loop to keep track of tries. create a variable name “tries” that will keep track of tries no more than 3 therefore if the input isn't an integer between 0 and 100, prompt the user to reenter

Ich habe ein Problem herauszufinden while-Schleife, um die Versuche zu verfolgen.

Hier ist, was ich habe:

import java.util.Scanner; 

public class GradeReport { 
public static void main(String[] args) { 

    int grade, category; 

    Scanner scan = new Scanner(System.in); 
    do { 
    System.out.println("Enter a numeric grade (0 to 100): "); 
    grade = scan.nextInt(); 
    if (grade >= 0 && grade <= 100) 
    break; 
    System.out.println("Error: You must re-enter an integer between 0 and 100"); 
    } while (true); 

    int tries = 1; 
    while (tries <= 3) { 
    System.out.println("Tries: " + tries); 
    tries++; 

    category = grade/10; 

    System.out.print("That grade is "); 
    switch (category) { 
    case 10: 
    System.out.println("a perfect score. Well done."); 
    break; 
    case 9: 
    System.out.println("well above average. Excellent."); 
    break; 
    case 8: 
    System.out.println("above average. Nice job."); 
    break; 
    case 7: 
    System.out.println("average."); 
    break; 
    case 6: 
    System.out.println("below average. You should see the"); 
    System.out.println("instructor to clarify the material " + "presented in class."); 
    break; 
    default: 
    System.out.println("not passing."); 
    } 
    } 
} 
} 
+3

folgenden Code haben "_Ich habe ein Problem fi Wing-Schleife, um den Überblick über tries zu behalten_ "Können Sie etwas mehr erklären/beschreiben, was Ihr spezifisches Problem ist? Was hast du probiert und womit bleibst du stecken? – JonasCz

+0

Ich möchte eine Variable "Versuche" machen, die Versuche nicht mehr als 3 verfolgen wird, daher, wenn die Eingabe keine ganze Zahl zwischen 0 und 100 ist, den Benutzer auffordern, erneut einzugeben. Ich habe eine Idee, wie es aber nicht genau geht. –

+0

dies zu verwerfen, ist meiner Meinung nach falsch. Es ist eine klare Consise-Frage, und sie sollte nicht abgelehnt werden, nur weil dies für die meisten von uns eine sehr einfache Lösung sein könnte. Denken Sie daran, dass wir irgendwann alle neu waren. – KjetilNordin

Antwort

0

Dies ist der Teil, wo Sie versuchen:

do { 
    System.out.println("Enter a numeric grade (0 to 100): "); 
    grade=scan.nextInt(); 
    if(grade>=0 && grade<=100) 
    break; 
    System.out.println ("Error: You must re-enter an integer between 0 and 100"); 
    }while(true); 

Dies ist der Teil, wo Sie Sie die Versuche zählen denken:

int tries = 1; 
    while (tries <= 3) { 
     System.out.println("Tries: " + tries); 
     tries++; 
     ... 

You need to define `int tries = 0;` before trying, and integrate the incrementation inside the loop where you actually try. I'm sure you can figure out the rest yourself. You seem to be pretty close :) 

EDIT: Aufgrund der anderen versuchen, Ihnen die vollständige Antwort (und nein t zu gut), hier ist, wie ich es tun würde: import java.util.Scanner;

public class GradeReport { 
    public static void main(String[] args) { 

     int grade, category; 

     int tries = 0; 

     Scanner scan = new Scanner(System.in); 
     do { 
      tries++; 
      System.out.println("Enter a numeric grade (0 to 100): "); 
      grade = scan.nextInt(); 
      if(grade >= 0 && grade <= 100){ 
       break; 
      } 
      System.out.println("attempt " + tries + " unsuccessful"); 
      if(tries >= 3){ 
       System.out.println("No more attempts."); 
       break; 
      } 
      System.out.println("Error: You must re-enter an integer between 0 and 100"); 

     } while (true); 

     if(grade >= 0 && grade <= 100){ 

      category = grade/10; 

      System.out.print("That grade is "); 
      switch (category) { 
      case 10: 
       System.out.println("a perfect score. Well done."); 
       break; 
      case 9: 
       System.out.println("well above average. Excellent."); 
       break; 
      case 8: 
       System.out.println("above average. Nice job."); 
       break; 
      case 7: 
       System.out.println("average."); 
       break; 
      case 6: 
       System.out.println("below average. You should see the"); 
       System.out.println("instructor to clarify the material " + "presented in class."); 
       break; 
      default: 
       System.out.println("not passing."); 
      } 
     } 
    } 
} 
+0

Was ist falsch daran: int tries = 1; while (versucht <= 3) { System.out.println ("Versuche:" + Versuche); versucht ++; –

+0

Könnten Sie zeigen, wie der Rest davon aussieht? –

+0

Was meinen Sie mit "define int tries = 0; vor dem Versuch, und integrieren Sie die Inkrementierung in der Schleife, wo Sie es tatsächlich versuchen." Wie würde der Rest aussehen? @KjetilNordin –

0

Sie müssen lediglich für die Eingabe der tries Variable vor der Wiederholung:

Scanner scan = new Scanner (System.in); 
    int tries = 0; 
    do 
    { 
     System.out.println("Enter a numeric grade (0 to 100): "); 
     grade=scan.nextInt(); 
     if(grade>=0 && grade<=100) 
      break; 
     tries += 1; 
     System.out.println ("Error: You must re-enter an integer between 0 and 100"); 
     }while(tries < 3); 

    System.out.println("Tries: " + (tries + 1)); 
+0

Warum ändern Sie den Index von Versuchen auf 0, wenn Sie ihn nach der Pause erhöhen? Es macht keinen Sinn. – KjetilNordin

+0

@KjetilNordin: Nur weil ich als alter Programmierer gewohnt bin, von 0 zu zählen ... Und beachte bitte, dass ich es später als "probiert + 1" für einen menschlichen, verständlichen Wert benutze. –

+0

Ich würde auch von 0 starten, aber ich würde definitiv den Index am Anfang der Schleife anstelle des Endes erhöhen :) @SergeBallesta – KjetilNordin

0

Versuchen Sie diesen Code

int grade, category; 

    Scanner scanner = new Scanner(System.in); 
    int tries = 0; 
    do{ 
     System.out.print("Enter a numeric grade (0 to 100): "); 
     grade = scanner.nextInt(); 
     if(grade<0 || grade>100){ 
      System.out.println ("Error: You must re-enter an integer between 0 and 100"); 
     } else { 
      break; 
     } 
     tries++; 
    } while (tries < 3); 
    System.out.print(grade); 

in Ort, wo man

int grade, category; 

     Scanner scan = new Scanner (System.in); 
     do 
     { 
      System.out.println("Enter a numeric grade (0 to 100): "); 
      grade=scan.nextInt(); 
      if(grade>=0 && grade<=100) 
       break; 
      System.out.println ("Error: You must re-enter an integer between 0 and 100"); 
      }while(true); 

     int tries = 1; 
     while (tries <= 3) { 
      System.out.println("Tries: " + tries); 
      tries++; 
+0

verwendet auch einen 0-basierten Index, während nach der Pause erhöht. Verschiebe tries ++ in die erste Zeile des Do, und du wirst es haben. – KjetilNordin