2017-05-26 4 views
-1

Ich habe eine switch Anweisung, in der ich versuche, nach string Werte zu überprüfen, ich will, dass nach der Überprüfung für den Namen sollte es nach Marken fragen. Aber wenn ich versuche, eine if else Anweisung in einer Methode zu machen, gibt es einen Fehler.Wenn ich versuche, Methode verwenden, geben Sie Fehler

hier ist der Code, der fein läuft:

import java.util.Scanner; 

public class java { 

    public static void main(String args[]) { 
     Scanner obj = new Scanner(System.in); 
     int num; 
     final int pass = 33; 
     String Student; 
     System.out.println("Please enter your name"); 
     Student = obj.nextLine(); 
     switch (Student) { 
      case "Ram": 
       System.out.println("Students name is " + Student); 
       break; 
      case "Shyaam": 
       System.out.println("Students name is " + Student); 
       break; 
      default: 
       System.out.println("This name is not recognised"); 

     } 

     System.out.println("Enter your marks"); 
     num = obj.nextInt(); 
     if (num < pass) { 
      System.out.println(Student + " You have failed the subject"); 
     } else { 
      System.out.println(Student + " You have passed the subject"); 
     } 
    } 
} 

aber in diesem, auch wenn Namen für Markierungen sie fragen immer noch nicht überprüft hat bekommen.

was soll ich tun.

Bitte helfen.

Antwort

1

Eine switch Anweisung ist keine while switch Anweisung.

Um eine weitere Eingabe zuzulassen, fügen Sie switch in eine while ein, die aktiviert wird, während der Schüler-String ungültig ist.
Außerdem sollten Sie Konventionen beachten: Der Variablenname sollte mit einem Kleinbuchstaben beginnen.
String student ist korrekt. String Student ist nicht.

String student = null; 

while (student == null){ 
    student = obj.nextLine(); 

    switch(student){ 
     case "Ram": 
     System.out.println("Students name is "+ Student); 
     break; 
     case "Shyaam": 
     System.out.println("Students name is "+ Student); 
     break; 
     default: 
      System.out.println("This name is not recognised"); 
      student = null; 
    } 
} 
+0

Danke für diese und was soll ich tun, um nach dem Abrufen der Name zu fragen, ich meine ich will, dass, wenn der Name falsch ist, dann sollte es nicht nach Marken von Benutzer fragen. –

+0

Die While-Anweisung soll dieses Problem beheben. In dem dargestellten Code, während die Eingabe für den Namen ungültig ist, wird der ausgeführte Code in der while Schleife ausgeführt. Wenn der ausgeführte Code zufällig hinter der while-Anweisung steht, bedeutet dies, dass der Name gültig ist. – davidxxx

0

Sie sollten die Klasse schließen. Hinzufügen von "}" zum Ende der Klasse

+0

ich habe das nicht hinzugefügt ... sorry ..aber es ist da im Code. Aber meine Frage ist anders –

0

können Sie einen boolean verwenden um zu überprüfen, ob der Name korrekt ist oder nicht, zum Beispiel:

boolean checkName = true;//<<---------------create a boolean 
switch (Student) { 
    case "Ram": 
     System.out.println("Students name is " + Student); 
     break; 
    case "Shyaam": 
     System.out.println("Students name is " + Student); 
     break; 
    default: 
     checkName = false;//<<---------------if the name is not correct, assign false 
     System.out.println("This name is not recognised"); 

} 

if (checkName) {//<<-------check if your name is correct, then you can ask the marks 
    System.out.println("Enter your marks"); 
    num = obj.nextInt(); 
    if (num < pass) { 
     System.out.println(Student + " You have failed the subject"); 
    } else { 
     System.out.println(Student + " You have passed the subject"); 
    } 
} 
+1

danke, so viel, jetzt funktioniert es :) –

0

Sie if Zustand innerhalb des switch bewegen kann.

switch(Student){ 
     case "Ram": 
     System.out.println("Students name is "+ Student); 

     System.out.println("Enter your marks"); 
     num=obj.nextInt(); 

     if(num<pass){ 
      System.out.println(Student+" You have failed the subject"); 
     }else{ 
      System.out.println(Student+" You have passed the subject"); 
      } 

      break; 
     case "Shyaam": 
     System.out.println("Students name is "+ Student); 

     System.out.println("Enter your marks"); 
     num=obj.nextInt(); 

     if(num<pass){ 
      System.out.println(Student+" You have failed the subject"); 
     }else{ 
      System.out.println(Student+" You have passed the subject"); 
     } 
     break; 
     default: 
      System.out.println("This name is not recognised"); 
    } 

Aber das wird Sie mehr Codes führen zu vermeiden, dass Sie eine weitere Variable verwenden können, wenn Schüler Name Spiel zu überprüfen. Dazu müssen Sie boolean Variable verwenden.

Dann sollte Code sein:

public static void main(String args[]){ 
    Scanner obj=new Scanner(System.in); 
    int num; 
    final int pass=33; 

    String Student; 
    System.out.println("Please enter your name"); 
    Student=obj.nextLine(); 

    boolean isStudent = false; 

    switch(Student){ 
    case "Ram": 
     isStudent = true; 
     System.out.println("Students name is "+ Student); 
     break; 
    case "Shyaam": 
     isStudent = true; 
     System.out.println("Students name is "+ Student); 
     break; 
    default: 
     System.out.println("This name is not recognised"); 
    } 

    if(isStudent){ 
     System.out.println("Enter your marks"); 
     num=obj.nextInt(); 

     if(num<pass){ 
      System.out.println(Student+" You have failed the subject"); 
     }else{ 
      System.out.println(Student+" You have passed the subject"); 
     } 
    }else{ 
     System.out.println("You are not a ...."); 
    } 
} 

Hinweis: Dies ist eine eine Art und Weise, dies zu tun.

+1

Ja, ich habe versucht, dieses und es funktioniert, aber das Problem mit diesem ist ich habe es richtig für wie viele Male und Vergleich mit jedem Namen ist sehr schwierig. BTW danke für den Kommentar :) –

+0

@RishavSharma bitte beziehen Sie sich die Antwort erneut Ich aktualisierte es um Ihre Anforderung zu erfüllen. – Blasanka

+0

danke mann :) \ –

Verwandte Themen