2016-08-27 3 views
-3

Ich versuche, Benutzereingaben über ihr Geschlecht zu erhalten, und wandeln es in ein Char und Großbuchstaben.charAt (0) String-Index außerhalb des Bereichs: 0

Allerdings bekomme ich diesen Fehler: Ausnahme im Thread "main" java.lang.StringIndexOutOfBoundsException: String-Index außerhalb des Bereichs: 0 at java.lang.String.charAt (unbekannte Quelle) bei InfoDisplay.main (InfoDisplay. java: 12)

import java.util.Scanner; 
    public class InfoDisplay { 
    public static void main(String args[]) { 
     Scanner sc = new Scanner(System.in); 

     String gender; 
     char genderChar; 

     System.out.print("Enter gender (Male/Female): "); 
     gender = sc.nextLine(); 
     gender = gender.toUpperCase(); 
     genderChar = gender.charAt(0); 


     System.out.println("Your gender is " + genderChar); 
    } 
} 
+2

Das passiert, wenn die Zeichenfolge leer ist. Ich weiß nicht, wie Sie es schaffen, eine leere Zeile von der Tastatur zu lesen. –

+0

versuchen, gender.isEmpty() zu überprüfen – hacker13ua

+0

Also, wie kann ich die Eingabe des Benutzers in ein Großbuchstabe konvertieren? – cosmo

Antwort

0

die Sie interessieren ..

import java.util.Scanner; 
    public class InfoDisplay { 
    public static void main(String args[]) { 
     Scanner sc = new Scanner(System.in); 

     String gender; 
     char genderChar; 

     System.out.print("Enter gender (Male/Female): "); 
     gender = sc.next(); //It will not take Enter as an input 
     gender = gender.toUpperCase(); 
     genderChar = gender.charAt(0); 


     System.out.println("Your gender is " + genderChar); 
    } 
} 

Wenn Sie sc.nextLine() verwenden String als Eingabe zu nehmen, es Enter als Eingabe von String betrachten, wenn Sie es nach der Eingabe Eingabe drücken werden Sie können also eine andere Alternative vonverwenden. Sie können sc.next() verwenden Wenn Ihre Eingabezeichenfolge keinen Platz enthält, wird es hier funktionieren.

1

Diese Ausnahme tritt auf, wenn Sie kein Zeichen in die Konsole eingeben (Ihr String ist leer). Ich empfehle, Ihren Code mit einem try/catch Block zu schreiben.

import java.util.Scanner; 

public class InfoDisplay { 
    public static void main(String args[]) { 
     Scanner sc = new Scanner(System.in); 

     String gender; 
     char genderChar; 

     System.out.print("Enter gender (Male/Female): "); 

     try { 
      gender = sc.nextLine(); 
      gender = gender.toUpperCase(); 
      genderChar = gender.charAt(0); 
      System.out.println("Your gender is " + genderChar); 
     } catch(Exception e) { 
      System.out.println("No gender has been entered. Please, try again"); 
     } 
    } 
} 

Mögliche Ausgänge:

  • Sie keine Zeichen eingeben:

    Enter gender (Male/Female):
    No gender has been entered. Please, try again

  • Sie geben 'F' char:

    Enter gender (Male/Female): f
    Your gender is F

  • Sie jede c eingeben har:

    Enter gender (Male/Female): x
    Your gender is X

Vielleicht wollen Sie ein Muster oder etwas Ähnliches schaffen nur ‚F‘ und ‚M‘ zu ermöglichen, die richtigen Zeichen zu sein.

Verwandte Themen