我得到了一个StringIndexOutOfBounds错误与这个Java程序行:
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:53:44
正如在另一个答案中提到的,每次迭代循环时,都会将lottoString的值重置为一位数。你需要加在上面,就像这样:
lottoString += Integer.toString(lotNums);另一个问题是使用substring方法。如果两个索引位置相同,如0,0,则返回一个空字符串。你想要的是:
String num1 = lottoString.substring(0,1);
String num2 = lottoString.substring(1,2);
String num3 = lottoString.substring(2,3);发布于 2014-08-31 18:45:28
for(int randomGen=0; randomGen < 3; randomGen++){
int lotNums = (int)(Math.random()*10);
lottoString = Integer.toString(lotNums);
}您将Integer.toString()的结果分配给lottoString。lotNums是介于0到9之间的一个数字。
我想你想
lottoString += Integer.toString(lotNums);https://stackoverflow.com/questions/25595097
复制相似问题