System.out.println("How many teams are in this tournament?");
no_of_teams=kb.nextInt();
for(int x=1; x<=no_of_teams; x+=1)
{
System.out.println("Please enter the name of team " + x);
team=kb.next();
}
我希望 team 包含所有用户输入,因此我可以稍后在程序中使用String.split再次输出团队名称。
我在Reddit上问了我原来的问题,但无济于事,就是这样:
我们被要求创建一个运行以收集数据的程序 基于'n'的循环足球锦标赛。团队我的 问题是我必须在开始时询问所有球队名称 (我必须)基于什么不。当然,用户输入的团队,我 可以使用for循环执行此操作,输出是完美的:
输入上面的代码
但是,我确信你知道,这个 基本上意味着团队现在只需存储为任何一个团队 名称最后输入,因为for循环导致它被覆盖。 这是一个问题,因为后来你想要的程序 然后输出所有不同的队名,以便他们在比赛时使用 彼此相对,但团队只存储一个团队名称。运用 team1,team2,team3等是不切实际的,因为用户可以输入 团队数量无限。我们不允许使用 数组,因为我们还没有涵盖它们,并且所有的帐户都是 我要解决的方法是使用String连接和while 循环,但我不确定这将如何适用。任何帮助都会 非常感谢!感谢。
答案 0 :(得分:1)
您只需将名称附加到带有附加分隔符的String:
StringBuilder team = new StringBuilder();
for(int x=1; x<=no_of_teams; x+=1)
{
System.out.println("Please enter the name of team " + x);
//this will add a - after each name, and then you could split on the - character
team.append(kb.next()).append("-");
}
但是,这确实不是最好的选择。我会使用数组来存储名称。我给出的答案将返回一个大字符串,你将不得不拆分' - '。
获得字符串后,您可以通过执行以下操作将其拆分:
team.toString().split("-");
如果您想输出所有团队名称,您可以执行以下操作:
for(String aTeam : team.toString().split("-")){
System.out.println("Team Name: " + aTeam);
}
答案 1 :(得分:0)
实际上,这是可能的!为方便起见,您不必使用java提供的arrays
或lists
,甚至隐含地像他的答案中提供的split
方法BlackHatSamurai。这很简单 - 你实现自己的ArrayList!嗯,无论如何都是类似ArrayList的东西。
class MyStringStringList {
private static final char delimeter = '%'; //just a character not in the input
private String internalMemory = "";
public void add(String s) {
internalMemory += s + delimeter;
}
public String getAll() {
return internalMemory;
}
public String get(int index) {
int delimeterCount = 0;
StringBuilder currentWord = new StringBuilder();
for (int j = 0; j < internalMemory.length(); j++) {
if (internalMemory.charAt(j) == delimeter) {
if (delimeterCount == index) {
return currentWord.toString();
} else {
delimeterCount++;
currentWord = new StringBuilder();
}
} else {
currentWord.append(internalMemory.charAt(j));
}
}
throw new ArrayIndexOutOfBoundsException(index);
}
}
为了清楚起见,我将此代码移动到了一个新类,但您可以将内部粘贴到主类中并从那里使用它。
一些用法:
MyStringStringList list = new MyStringStringList();
for (int x = 1; x <= no_of_teams; x += 1) {
System.out.println("Please enter the name of team " + x);
list.add(kb.next());
}
for (int i = 0; i < no_of_teams; i++) {
System.out.println("Team number " + i+1 + ": " + list.get(i));
}
请注意,只有一个疯狂的人会这样做。低效,可能是错误的,不完整的功能......但如果你没有弄错,事实上你被禁止使用内置数组或集合,这可能是你的老师应得的“你的规则是愚蠢的”解决方案。 / p>