2016-11-15 9 views
0

私はこれらと一緒に、この例外を受けています:Javaのエラーjava.lang.StringIndexOutOfBoundsException:範囲外の文字列インデックス:0

java.lang.StringIndexOutOfBoundsException:文字列のインデックス範囲外:javaので日で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で RandomWalk.main(RandomWalk.java:17)で RandomWalk.matchingChoice(RandomWalk.java:50)で.lang.String.charAt(不明なソース) .reflect.NativeMethodAccessorImpl.invoke(不明なソース) からsun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:267)

でjava.lang.reflect.Method.invoke(不明なソース)このコードを実行する:

import java.util.*; 
import java.awt.*; 
public class RandomWalk{ 
    public static final Scanner CONSOLE = new Scanner(System.in); 
    public static void main(String[] args){ 
    System.out.println("Enter Circle Radius (50-400):"); 
    int radius = CONSOLE.nextInt(); 
    while (radius < 50 || radius > 400){ 
     System.out.println("Radius Invalid; Try Again"); 
     System.out.println("Enter Circle Radius (50-400):"); 
     radius = CONSOLE.nextInt(); 
    } 
    int diameter = radius*2; 
    int panelD = diameter/4; 
    System.out.println("Enter Color of Circle (Blue or Green)"); 
    String colorChoice = CONSOLE.nextLine(); 
    boolean test = matchingChoice(colorChoice, "blue"); 
    boolean test2 = matchingChoice(colorChoice, "green"); 
    while(test2 == false && test == false){ 
     System.out.println("Invalid Entry Try Again"); 
     System.out.println("Enter Color of Circle (Blue or Green)"); 
     colorChoice = CONSOLE.nextLine(); 
     test = matchingChoice(colorChoice, "blue"); 
     test2 = matchingChoice(colorChoice, "green"); 
    } 
    if(test == true){ 
     Color circleColor = Color.BLUE; 
    } else { 
     Color circleColor = Color.GREEN; 
    } 
    System.out.println("Enter Color of Walk Path (Orange or Red)"); 
    colorChoice = CONSOLE.nextLine(); 
    test = matchingChoice(colorChoice, "orange"); 
    test2 = matchingChoice(colorChoice, "red"); 
    while(test2 == false && test == false){ 
     System.out.println("Invalid Entry Try Again"); 
     System.out.println("Enter Color of Circle (Orange or Red)"); 
     colorChoice = CONSOLE.nextLine(); 
     test = matchingChoice(colorChoice, "orange"); 
     test2 = matchingChoice(colorChoice, "red"); 
    } 
    if(test == true){ 
     Color pathColor = Color.ORANGE; 
    } else { 
     Color pathColor = Color.RED; 
    } 
    } 
    public static boolean matchingChoice(String input, String choice){ 
    input = input.toLowerCase(); 
    char fLI = input.charAt(0); 
    char fLC = choice.charAt(0); 
    if(fLI == fLC){ 
    return true; 
    } else if (input.equals(choice)){ 
     return true; 
    } else { 
     return false; 
    } 
    } 
} 

エラーは、私は次のnextLineを変更しようとしてきたし、それは入力が可能になるが、右入力した後、同じエラーが表示されるのと同じ

System.out.println("Enter Color of Circle (Blue or Green)"); 

後に来ます。どんな助けでも大変感謝しています。ありがとうございます。

答えて

0

あなたはCONSOLE.nextLine();で間違いを犯しました; CONSOLE.next()のように置き換えてください。 とコードが正しく実行されます。

public static final Scanner CONSOLE = new Scanner(System.in); 

public static Scanner CONSOLE = new Scanner(System.in); 

にして、あなたが新しい Scanner上のインスタンスを作成します:

String colorChoice = CONSOLE.next(); 

すべてCONSOLE.nextLine()CONSOLE.next()

+0

nextLine()とnext()の違いは、挿入する新しい行だけです。 – msagala25

0

は、あなたのスキャナのあなたの宣言で、最終的に削除置き換えますあなたのCONSOLEはあなたですCONSOLE Variableに異なるデータタイプを入力するためです。

System.out.println("Enter Color of Circle (Blue or Green)"); 
CONSOLE = new Scanner(); // Instantiate new Scanner on your CONSOLE variable 
colorChoice = CONSOLE.nextLine(); 

願っています。

+0

それは問題だった、ありがとう! –

+0

もし私がそれを得たら、私の答えにチェックを入れてください。ありがとう:) – msagala25

関連する問題