2016-08-27 12 views
-3

私は自分の性別でユーザー入力を取得し、それを大文字に変換しようとしています。charAt(0)文字列インデックスが範囲外です。0

しかし、私はこのエラーが発生し続ける:スレッド "main"の例外java.lang.StringIndexOutOfBoundsException:Stringインデックスが範囲外です:0 java.lang.String.charAt(Unknown Source)in 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

文字列が空の場合に発生します。キーボードから空行をどのように読み込むのか分かりません。 –

+0

gender.isEmpty() – hacker13ua

+0

どうすればユーザーの入力を大文字に変換できますか? – cosmo

答えて

0

これを試してみてください。..

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); 
    } 
} 

あなたは、入力として文字列を取るためにsc.nextLine()を使用している場合、それは文字列の入力としてEnterを検討しますあなたはの別の代替を使うことができます。 sc.next()を使用できます。入力文字列にスペースが含まれていない場合は、ここで動作します。

1

この例外は、コンソールに文字を入力しないと発生します(文字列は空です)。あなたのコードをtry/catchブロックで書くことをお勧めします。

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"); 
     } 
    } 
} 

可能な出力:あなたは任意の文字入力しない

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

  • は、あなたが入力し'F'文字:あなたは任意のCを入力し

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

  • HAR:

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

たぶん、あなただけの「F」と「M」は正しい文字ことを可能にするためにそのようなパターンか何かを作成したいと思います。

関連する問題