【发布时间】:2017-06-26 17:17:00
【问题描述】:
此程序获取 2 个团队和 2 个结果的用户输入,用“:”分隔符将它们分隔,然后将它们存储在数组中,当用户输入“停止”一词时,它会停止询问用户输入,并且旨在显示比赛的结果和统计数据(尚未添加到代码中)。我遇到的问题是,如果我输入多行匹配结果然后输入“停止”,它只会将用户输入的第一行显示回控制台而不显示其他任何输入?输入示例:“切尔西:阿森纳:2:1”。
public static final String SENTINEL = "stop";
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String hometeam = new String();
String awayteam = new String();
String homescore = new String();
String awayscore = new String();
int result0;
int result1;
System.out.println("please enter match results:");
// loop, wil ask for match results ( b < () )
for (int b = 0; b < 100; b++) {
String s = sc.nextLine();
// stop command
while (sc.hasNextLine()) { // better than the for loop
String line = sc.nextLine();
String results[] = s.split(" : "); // parse strings in between
// the
for (String temp : results) {
hometeam = results[0];
awayteam = results[1];
homescore = results[2];
awayscore = results[3];
}
// convert 'score' strings to int value.
result0 = Integer.valueOf(results[2]);
result1 = Integer.valueOf(results[3]);
if ("stop".equals(line)) {
System.out.println(Arrays.toString(results));
return; // exit
}
【问题讨论】:
-
您在 while 语句的每次迭代中声明和初始化 results,所以它总是不同的。
-
为什么是
for (String temp : results) {? -
我是从另一个 stackoverflow 问题中得到的,它有效,所以我把它留在了
-
您可能断章取义了。如果你只是复制/粘贴代码而不理解它,你永远不会学会自己编码。
标签: java arrays loops delimiter