當我就行了這個Java程序的StringIndexOutOfBounds錯誤:的Java StringIndexOutOfBounds使用子串
String num3 = lottoString.substring(2,2);
告訴我,2超出範圍的,但是這個代碼應隨機挑選範圍三位數彩票號碼從000到999.我的錯誤是什麼?
import java.util.Scanner;
public class Lottery
{
public static void main(String[] args)
{
//Declare and initialize variables and objects
Scanner input = new Scanner(System.in);
String lottoString = "";
//Generate a 3-digit "lottery" number composed of random numbers
//Simulate a lottery by drawing one number at a time and
//concatenating it to the string
//Identify the repeated steps and use a for loop structure
for(int randomGen=0; randomGen < 3; randomGen++){
int lotNums = (int)(Math.random()*10);
lottoString = Integer.toString(lotNums);
}
String num1 = lottoString.substring(0,0);
String num2 = lottoString.substring(1,1);
String num3 = lottoString.substring(2,2);
String num12 = num1 + num2;
String num23 = num2 + num3;
String num123 = num1 + num2 + num3;
//Input: Ask user to guess 3 digit number
System.out.println("Please enter your three numbers (e.g. 123): ");
String userGuess = input.next();
//Compare the user's guess to the lottery number and report results
if(userGuess.equals(num123)){
System.out.println("Winner: " + num123);
System.out.println("Congratulations, both pairs matched!");
}else if(userGuess.substring(0,2).equals(num12)){
System.out.println("Winner: " + num123);
System.out.println("Congratulations, the front pair matched!");
}else if(userGuess.substring(1,3).equals(num23)){
System.out.println("Winner: " + num123);
System.out.println("Congratulations, the end pair matched!");
}else{
System.out.println("Winner: " + num123);
System.out.println("Sorry, no matches! You only had one chance out of 100 to win anyway.");
}
}
}
添加一行來打印出字符串的長度,就在你做子串操作之前。 – 2014-08-31 18:49:28