道歉,我开始了,不能解决这里出了什么问题。
// Declare string to hold numbers output
String lottoNum = "";
// Declare scanner variable
Scanner scan1 = new Scanner(System.in);
// Ask user for numbers
System.out.println("To buy a ticket we need your numbers...");
// Set up loop for 6 numbers
for (int i = 1; i<=6; i++)
{
System.out.println("Please enter lotto number " + i);
String num = scan1.nextLine();
lottoNum = lottoNum + ", " + num;
}
System.out.println(lottoNum);
它按预期循环,要求数字1到6。但是当它返回带有所有6个数字的集合的lottoNum时,它以&#34;,&#34;开始。
Please enter lotto number 5
28
Please enter lotto number 6
19
, 22, 12, 4, 38, 28, 19
为什么从这个&#34;开始,&#34;?我可以阻止它在开始时使用它吗?
答案 0 :(得分:1)
创建新字符串不是最佳选择。我建议将所有nums收集到一个列表中,然后使用内置的String.join方法。
当然,在解析数字时,最好使用scanner.nextInt()而不是scanner.nextLine()。
// Declare scanner variable
Scanner scan1 = new Scanner(System.in);
// Ask user for numbers
System.out.println("To buy a ticket we need your numbers...");
List<Integer> nums = new ArrayList<Integer>();
// Set up loop for 6 numbers
for (int i = 1; i<=6; i++)
{
System.out.println("Please enter lotto number " + i);
nums.add(scan1.nextInt());
}
System.out.println(String.join(',', nums));
答案 1 :(得分:0)
添加条件:
lottoNum = lottoNum + num;
if (i < 6) lottoNum = lottoNum + ", ";
除最后一个号码外,它会在每个号码的末尾添加,
。
答案 2 :(得分:0)
您应该尝试在for循环之前保存第一个数字。
然后在for循环中询问数字2,3,4,5和6.
答案 3 :(得分:0)
也许你想使用StringJoiner类来获得所需的行为:
StringJoiner sj = new StringJoiner(", "); //argument passed will separate passed objects
sj.add(String.valueOf(12));
sj.add(String.valueOf(24));
sj.add(String.valueOf(50));
System.out.println(sj);
输出:
12, 24, 50
您可以使用带有3个参数的StringJoiner构造函数 - 您也可以使用它来定义前缀和后缀。