2016-10-27 2 views
0

@pablo scheine ich in dieser Schleife zu:Java Hinzufügen von Validierung zu meinem Code

do{ 
      System.out.println("Voulez-vous saisir d'autres parties? (o/n)");    
      reponse = niveau.nextLine(); // extraction de la dernière ligne 
      if (reponse.toLowerCase().equals("o") == false || reponse.toUpperCase().equals("O") == false || reponse.toLowerCase().equals("n") == false || reponse.toUpperCase().equals("N") == false) { 
      System.out.println("R\u00C9PONSE INVALIDE ! VEUILLEZ ENTRER O OU N."); 
      } else { 
      validationReponse = true; 
      } 
     }while(!validationReponse); 

Vielen Dank für Ihre Hilfe! Ich war in der Lage, die Validierung für Fragen mit numerischen Antworten zu bekommen, aber jetzt weiß ich nicht, wie man es für Fragen mit einer "y oder n" Antwort funktioniert. Ich habe versucht, diese aber es funktioniert nicht:

do{ 
      System.out.println("Do you want to enter more game scores ? (y/n)");    
      reponse = niveau.nextLine(); 
      if (reponse != o || reponse != n) { 
      System.out.println("Answer is invalid! Please enter y or n."); 
      } else { 
       validationReponse = true; 
      } 
     }while(!validationReponse); 

Ich bin ein Anfänger. Ich nehme meine erste Java-Klasse. In meinem Code möchte ich eine Validierung für die Fragen hinzufügen: Bitte wählen Sie eine Spielstufe, Haben Sie das Spiel gewonnen und möchten Sie weitere Spiele eingeben, muss ich sicherstellen, dass die Eingabe gültig ist und wenn eine ungültige Antwort bereitgestellt wird, muss es zu der Frage zurückgehen. Ich bin mir nicht sicher, wie ich das machen soll. Keine erweiterte Codierung in Ihren Antworten bitte. Ich bin in einer Anfängerklasse. Es muss einfach sein.

String reponse="O";      

    while (reponse.toLowerCase().equals("o"))  
    { 
          System.out.println("Please choose your game level :"); 
     System.out.println (" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");    
     System.out.println (" For Beginner press 1"); 
     System.out.println (" For Advanced press 2"); 
     System.out.println (" For Expert press 3"); 
     System.out.println (" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); 
     System.out.print (" My choice is : "); 

     Niveau = niveau.nextInt(); 

     if(Niveau == 1){ 

       int choix1 = 0; 
       nbParties_Facile++;   
       System.out.println("Have you won the game ?");     
       System.out.println("  Press 1 for YES "); 
       System.out.println("  Press 2 for NO "); 

       choix1 = niveau.nextInt(); 
       niveau.nextLine(); 

        if (choix1 == 1){ 

        nbPartiesFaciles_Finies++; 
        tauxReussite_Facile = nbPartiesFaciles_Finies/nbParties_Facile * 100; 
        System.out.println("How many times did you take to complete the grid ?"); 
        System.out.println("  Please enter the time in minutes"); 
        String afficheur5 = niveau.nextLine(); 
        tempsResolution_Facile = (nbPartiesFaciles_Finies * tempsResolution_Facile) + Integer.parseInt(afficheur5)/(nbPartiesFaciles_Finies); 
        } 
        else if (choix1 == 2){ 
        tauxReussite_Facile = nbPartiesFaciles_Finies - 1/nbParties_Facile * 100; 
        } 
        else { 
        //default 
        } 
     } 

     if(Niveau == 2){ 

       int choix2 = 0; 
       nbParties_Intermediaire++;    
       System.out.println("Have you won the game ?");     
       System.out.println("  Press 1 for YES "); 
       System.out.println("  Press 2 for NO "); 

       choix2 = niveau.nextInt(); 
       niveau.nextLine(); 

        if (choix2 == 1){ 

        nbPartiesIntermediaires_Finies++; 
        tauxReussite_Intermediaire = nbPartiesIntermediaires_Finies/nbParties_Intermediaire * 100; 
        System.out.println("How many times did you take to complete the grid ?"); 
        System.out.println("  Please enter the time in minutes"); 
        String afficheur7 = niveau.nextLine(); 
        tempsResolution_Intermediaire = (nbPartiesIntermediaires_Finies * tempsResolution_Intermediaire) + Integer.parseInt(afficheur7)/(nbPartiesIntermediaires_Finies); 
        } 
        else if (choix2 == 2){ 
        tauxReussite_Intermediaire = nbPartiesIntermediaires_Finies - 1/nbParties_Intermediaire * 100; 
        } 
        else { 
        //default 
        } 
     } 

     if(Niveau == 3){ 

       int choix3 = 0; 
       nbParties_Expert++;    
       System.out.println("Have you won the game ?");     
       System.out.println("  Press 1 for YES "); 
       System.out.println("  Press 2 for NO "); 

       choix3 = niveau.nextInt(); 
       niveau.nextLine(); 

        if (choix3 == 1){ 

        nbPartiesExpertes_Finies++; 
        tauxReussite_Expert = nbPartiesExpertes_Finies/nbParties_Expert * 100; 
        System.out.println("How many times did you take to complete the grid ?"); 
        System.out.println("  Please enter the time in minutes"); 
        String afficheur9 = niveau.nextLine(); 
        tempsResolution_Expert = (nbPartiesExpertes_Finies * tempsResolution_Expert) + Integer.parseInt(afficheur9)/(nbPartiesExpertes_Finies); 
        } 
        else if (choix3 == 2){ 
        tauxReussite_Expert = nbPartiesExpertes_Finies - 1/nbParties_Expert * 100; 
        } 
        else { 
        //default 
        } 
     } 

     System.out.println("Do you want to enter more games ? (o/n)");    
     reponse = niveau.nextLine();  

    } 

     niveau.close(); 
+1

'response.toLowerCase(). Equals (" o ")' Kann zur Vereinfachung und Berechtigung durch 'response.equalsIgnoreCase (" o ")' ersetzt werden. – jthort

+0

Was macht das? Niveau.nextLine(); '? Ich glaube nicht, dass du das brauchst. –

+0

Ich denke, du bist richtig füriveau.nextLine(); . Ich werde es entfernen. – Zyplexx

Antwort

0

Lassen Sie uns die Verwendung als ein Beispiel Bitte ein Spiel Ebene Frage wählen

So Sie es gibt viele Möglichkeiten, dies zu tun, ich werde versuchen, es so einfach wie möglich zu halten, da Sie ein Anfänger sind die Sprache, aber das Ziel ist immer, objektorientiert zu programmieren. Dies können wir jedoch mit einer einfachen Methode erreichen. So könnte man ein einfaches Verfahren wie diese:

private static boolean askForLevel() { 
    System.out.println("What is the level you want?"); 
    String response = scanner.nextLine(); 
    if (!response.equals("something")) { 

     return false; 
    } 
    askForLevel(); 
    // More stuff 
    return true; 
} 
+0

Vielen Dank für Ihre Hilfe! Wenn ich nun eine Frage validieren muss, wo die Antwort y oder n ist, wie mache ich das? Ich habe es versucht, aber es funktioniert nicht! if (antwort! = y || antwort! = n) { – Zyplexx

+0

Denken Sie daran, dass Sie für Strings die Methode equals() verwenden möchten, um mit Strings zu vergleichen, würden Sie nur den Operator! = verwenden, wenn Sie primitive Datentypen vergleichen. Also für einen String, response.equals ("anotherstring") – Pablo

+0

habe ich versucht, dies aber jetzt scheine ich in meiner Schleife zu: – Zyplexx

0

Do somwething wie unten,

do { 
     System.out.println("Please choose your game level :"); 
     System.out.println (" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");    
     System.out.println (" For Beginner press 1"); 
     System.out.println (" For Advanced press 2"); 
     System.out.println (" For Expert press 3"); 
     System.out.println (" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); 
     System.out.print (" My choice is : "); 
     while (!sc.hasNextInt()) { 
     System.out.println("That's not a number, Please choose a Number !"); 
     sc.next(); 
    } 
    number = sc.nextInt(); 
} while (number<=3); 

innen if(number==1) tun, das Ding wie oben.

0

Ich würde JOptionPane anstelle von Scanner verwenden ... aber das ist eine Frage der Meinung. Da Sie neu sind, ist Ihr Lehrer wahrscheinlich nicht direkt in der Programmierung objektorientierte springen, was in Ordnung ist, weil Sie die Grundlagen verstehen müssen, so mit einem minimalen Einsatz von objektorientierter Programmierung:

//user input 
    int level = 0; 
    do{ 
     level = Integer.parseInt(JOptionPane.showInputDialog("Choose the level :").trim()); 
    }while(level < 1 || level > 3); 

    if (level == 1) { 
     //your code 
    } 
    else if(level == 2){ 
     //your code 
    } 
    else if(level == 3){ 
     //your code 
    } 

Sie könnte dies in einer privaten Methode bauen, wie Pablo vorgeschlagen hat.

Verwandte Themen