我是 Java 的初学者,我才刚刚开始自学数组和列表。以下是我为在线礼品登记练习提出的代码片段,虽然我了解其中的大部分内容,但有时我不得不反复试验,直到代码最终显示出我想要的输出。这里有几个问题:
System.out.println("Enter item: ");
gift.add(x.next());
System.out.println("Enter store: ");
store.add(x.next());
这是用户输入礼物时的代码以及他可以从中购买礼物的商店。我发现如果输入以空格分隔的单词,输出将如下所示:
Do you wish to make a gift wish list? [Y/N]
Y
Enter item:
High heels
Enter store:
Any more items? [Y/N]
问题1:为什么会发生这种情况?我在代码的早期声明这是一个字符串(一个ArrayList
,但是一个<String>
),即使我修改了 Scanner 方法,(x.nextLine());
我仍然会在控制台中打印它。当用户输入一个单词的答案时,代码可以正常工作,但我仍然想知道为什么会发生这种情况,以及允许带有空格的条目的可能替代方案是什么。
问题#2:这部分代码,我不得不在互联网上查找。没有任何解释为什么这是必需的,但代码仍然有效。
for (int i = 0; i < gift.size(); i++) {
System.out.print(gift.get(i)+ " - ");
System.out.print(store.get(i));
System.out.println("");
}
在我发现这一点之前,我最初是从用户输入项目开始的System.out.println("Gift List: \n" + gift + " - " + store);
,当显示用户输入项目时,它们位于括号中并用逗号分隔。这段代码中 i 的值是多少,为什么要增加它?我还尝试将gift
in更改gift.size();
为store
并且代码仍然可以正常工作。顺便说一句,这是为什么?我们只是选择放置哪些变量,还是遵循某种语法?
提前致谢。
编辑:这是完整的代码。
package arrays;
import java.util.ArrayList;
import java.util.Scanner;
public class GiftList {
public static void main(String[] args) {
Scanner x=new Scanner (System.in);
char ans;
ArrayList<String> gift= new ArrayList<String>();
ArrayList<String> store = new ArrayList<String>();
System.out.println("Do you wish to make a gift wish list? [Y/N]");
ans=x.next().toLowerCase().charAt(0);
while (ans!='n')
{
System.out.println("Enter item: ");
gift.add(x.nextLine());
System.out.println("Enter store: ");
store.add(x.nextLine());
System.out.println("Any more items? [Y/N]");
ans=x.next().toLowerCase().charAt(0);
}
System.out.println("Gift List: ");
for (int i = 0; i < gift.size(); i++) {
System.out.print(gift.get(i)+ " - ");
System.out.print(store.get(i));
System.out.println("");
}
}
}