2016-03-29 8 views
0

I umgewandelt werden, ein Verfahren zum Scanner erstellen:Fehler über inkompatible Typen: String kann nicht in char

public static char getStatus() { 
    Scanner kb = new Scanner(System.in); 
    System.out.print("You are in state student or not(yes for Y/y,no for N/n)"); 
    char state = kb.nextLine().charAt(0); 
    if (state == 'Y'||state == 'y') { 
     String instate = "In State"; 
     System.out.println(instate); 
     int statusfee = 5; 
     return instate; 
     } else if (state == 'N'||state == 'n') { 
     String outstate = "Out-of-State"; 
     System.out.println(outstate); 
     int statusfee = 5+2; 
     return outstate; 
     } else { 
     String false = "FALSE"; 
     System.out.print(false); 
     return false; 
    } 
    } 

Ich versuche, für meine Wahl auszudrucken. Beispiel:

System.out.println("Residencey:" + state); 

ich will, wenn ich "Y oder y" eingeben dann ist der Ausgang Residencey: Im Zustand.

Und die Fehler sind:

error: incompatible types: String cannot be converted to char

Ich weiß nicht, warum, kann nicht java nicht zurück String oder einen Satz? Ich bin ein Anfänger in Java, also kann ich keine schwierige Methode verwenden.

+0

'false' ist ein„reserviertes Wort“so zu sprechen, so kann man nicht verwenden Sie es als Variablenname – 3kings

+0

Sie haben zwei Codepfade, die 'String' (s) zurückgeben und eine, die einen' boolean' zurückgibt. Wie möchten Sie diese Methode verwenden? –

+0

Ok, die Frage geht nicht um "falsch", es geht darum, wie man den Satz zurückgibt. @ ElliottFrisch –

Antwort

0

Ihre Methode Rückgabetyp ist char und Sie geben String zurück, deshalb wird ein Fehler angezeigt. Hier ist der Code mit dem richtigen Rückgabetyp

public static String getStatus() { 
    Scanner kb = new Scanner (System.in); 
    System.out.print ("You are in state student or not(yes for Y/y,no for N/n)"); 
    char state = kb.nextLine().charAt (0); 
    if ((state == 'Y') || (state == 'y')) { 
     String instate = "In State"; 
     System.out.println (instate); 
     int statusfee = 5; 
     return instate; 
    } else if ((state == 'N') || (state == 'n')) { 
     String outstate = "Out-of-State"; 
     System.out.println (outstate); 
     int statusfee = 5 + 2; 
     return outstate; 
    } else { 
     String FALSE = "FALSE"; 
     System.out.print (false); 
     return FALSE; 
    } 
} 
+0

Und hier ist ein Satz 'char status = getStatus();' ist falsch. gleicher Fehler: inkompatible Typen: String kann nicht in char konvertiert werden Das ist in meiner Hauptmethode. –

+0

dann müssen Sie Y oder N von Ihrer Methode getstatus() zurückgeben. weil string viele chars hat und char nur einen char haben kann –

+0

yeah. Also das Problem ist, ich brauche 'System.out.println (" Residencey: "+ Staat);' kommen zu sein, Residencey: In State. Hast du ein paar Vorschläge? Geben Sie einfach den Satz wie Residenz: In State, wenn ich y oder Residencey eingeben: Out-of-State, wenn ich n –

0

Sie bitte Ihre Methode Rückgabetyp zu String ändern. Beispiel

public class ScannerTest { 
    public static void main(String[] args) { 
     getStatus(); 
    } 

    public static String getStatus() { 
     Scanner kb = new Scanner(System.in); 
     System.out.print("You are in state student or not(yes for Y/y,no for N/n)"); 
     char state = kb.nextLine().charAt(0); 
     if (state == 'Y' || state == 'y') { 
      String instate = "In State"; 
      System.out.println(instate); 
      int statusfee = 5; 
      return instate; 
     } else if (state == 'N' || state == 'n') { 
      String outstate = "Out-of-State"; 
      System.out.println(outstate); 
      int statusfee = 5 + 2; 
      return outstate; 
     } else { 
      String myfalse = "FALSE"; 
      System.out.print(myfalse); 
      return myfalse; 
     } 
    } 
} 

Ich habe Ihren Variablennamen geändert.

+0

Das Problem ist nicht falsch oder falsch. es geht um die Rückkehr. –

+0

Hmm ... deine Antwort ist die gleiche wie Ashu, es funktioniert nicht. Ich habe versucht, Char zu String zu ändern. –

+0

Könntest du mich wissen lassen, was hast du erwartet 'getStatus()' return? Y? N? – Alice

0

Wenn Ihre Anforderung char status = getStatus(); ist denke ich Ihre Klasse wie folgt aussehen:

public class ScannerTest { 
    public static void main(String[] args) { 
     Scanner kb = new Scanner(System.in); 
     char status = getStatus(kb); 
     if (status == 'Y') { 
      // System.out.println("In State"); 
     } else if (status == 'N') { 

      // System.out.println("Out-of-State"); 
     } else { 
      // System.out.println("FALSE"); 
     } 
     System.out.println("Status is " + status); 
    } 

    public static char getStatus(Scanner kb) { 

     System.out 
       .print("You are in state student or not(yes for Y/y,no for N/n)"); 
     char state = kb.nextLine().charAt(0); 
     if (state == 'Y' || state == 'y') { 
      String instate = "In State"; 
      System.out.println(instate); 
      int statusfee = 5; 
      return 'Y'; 
     } else if (state == 'N' || state == 'n') { 
      String outstate = "Out-of-State"; 
      System.out.println(outstate); 
      int statusfee = 5 + 2; 
      return 'N'; 
     } else { 
      String myfalse = "FALSE"; 
      System.out.print(myfalse); 
      return 'F'; 
     } 
    } 
} 

Ich hoffe, es wird Ihnen helfen :)

+0

JAVA sagt: "Fehler: kann Symbol nicht finden" für 'öffentliche statische char getStatus (Scanner kb) {' und 'Scanner kb = neuer Scanner (System. in) '. Symbol: Klasse Scanner Ort: Klasse Test 3 Fehler –

+0

Sie müssen so aufrufen 'Scanner kb = neuer Scanner (System.in);' 'char status = getStatus (kb);' – Alice

+0

@LeoLin können Sie 'ändern getStatus (Scanner kb) ', wie du willst :) – Alice

Verwandte Themen