每當我嘗試運行代碼時,在輸入我想要購買的票數後,它會給我一個錯誤。這是一個彩票計劃。下面是代碼嘗試運行代碼時出現異常。字符串索引超出範圍
import java.util.Scanner;
public class Lottery {
public static void main(String[] args) {
//local data
String guess;
int numTickets;
int counter;
Scanner in = new Scanner(System.in);
//output
System.out.println("How many tickets would you like to buy?");
numTickets = in.nextInt();
for (counter = 0; counter < numTickets; counter++) {
System.out.println("Please enter your three numbers (e.g. 123): ");
guess = in.nextLine();
int randNum = (int) (Math.random() * 1000);
String randNumb;
randNumb = Integer.toString(randNum);
char ch1 = randNumb.charAt(0);
char ch2 = randNumb.charAt(1);
char ch3 = randNumb.charAt(2);
if (ch1 == guess.charAt(0) && ch2 == guess.charAt(1) && ch3 == guess.charAt(2)) {
System.out.print("Winner: " + randNumb);
System.out.print("Congratulations, both pairs matched. /n");
} else if (ch3 == guess.charAt(2) && ch2 == guess.charAt(1)) {
System.out.print("Winner: " + randNumb);
System.out.print("Congratulations, the end pair matched.");
} else if (ch1 == guess.charAt(0) && ch2 == guess.charAt(1)) {
System.out.print("Winner: " + randNumb);
System.out.print("Congratulations, the first pair matched.");
} else {
System.out.print("The Correct Number: " + randNumb);
}
System.out.println("\t Sorry, no matches, You only had");
System.out.println("\t one chance out of 100 to win anyway.");
}
}
}
例外:
異常螺紋\ 「主」 java.lang.StringIndexOutOfBoundsException: 字符串索引超出範圍:在 java.lang.String.charAt 0( String.java:658)at lottery.Lottery.main(Lottery.java:32) C:\ Users \ Ben \ AppData \ Local \ NetBeans \ Cache \ 8.1 \ executor-snippets \ run.xml:53: Java返回:1
這是我嘗試運行該程序時顯示的異常錯誤。 幫助將不勝感激!
更好用String.valueOf();而不是Integer.toString(); (有幾個問題)。 nextLine和netxInt也存在問題。谷歌它 – XtremeBaumer
你有沒有嘗試用調試器通過你的代碼? –
請注意'Math.random()* 1000'會給出一個介於0和1000之間的值,它可能是一個小於三位的值。 – Berger