我正在尝试创建一个数组,如果它与先前的条目不匹配,则会创建一个新值。如果该条目与上一个条目相同,则第二个数组中的索引将加1。
for (j = 0; !input.equals("x"); j++ ) { // team loop
System.out.println("Which team just won? (x to exit)");
input = scnr.nextLine();
for (i = 0; i < team.length - 1; i++) {
if (team[i] == input) {
score[j]++;
}
else if (team[i] != input) {
continue;
}
}
}
答案 0 :(得分:1)
看起来是一个良好的开端,但是稍后您应该记住一些问题。
首先,您必须使用team [i] .equals(input)来比较两个字符串。
第二,不需要第二个条件“ else if” 声明。如果第一个“ if”语句没有抓住 要求,它将继续进行下一次迭代。
第三,请注意您的代码格式。您的分号 {}在某些地方没有对齐,使阅读变得混乱。
要稍微回答您的问题,请考虑您要做什么。您希望您的“团队”和“得分”数组彼此对齐,以使team [0]的得分存储在score [0]中。设置方式将搜索输入的团队的索引。然后,您在索引j处增加分数(在循环的每个周期中将其增加1)。
我们假设“苹果”小组的排名为0,而“香蕉”小组的排名为1。
如果第一轮的输入是“香蕉”,则您的循环会发现团队“香蕉”位于内部for循环的索引1处。然后,它将使j的分数增加,该分数为0。这意味着即使香蕉是获胜者,最终分数也将是“ apple”:1和“ banana”:0。
希望可以帮助您对问题进行一点思考!
答案 1 :(得分:1)
while(True){
System.out.println("Which team just won? (x to exit)");
input = scnr.nextLine();
if(input.equals('x')) break;
for(int i=0;i< team.length-1;i++){
if (team[i].equals(input)) {
score[i]++;
}
}
}
以上代码假定您有两个数组Team和Score,每个与Team匹配的索引的得分都在Score数组中的同一索引上。
在您的代码中,其他if(team [i]!=输入)代码实际上是多余的,因为如果IF匹配失败,则这实际上是for循环对其自身所做的事情。
其次,字符串匹配应使用.equal()完成,因为==比较对象,而不是实际字符串。 对于团队字符串的实际比较,您应该尝试 lowercasing 输入,因为团队xyz与Xyz不匹配。
*您可以使用地图(哈希图)代替团队和得分的两个数组,您可以在其中将团队存储为键,并将得分存储为值,并在每次输入时检查是否键(该团队的名称已存在),如果存在,则将值更新为1。 像
Foo score = map.get(teamName);
if(score){
score++;
}