Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
}
好的,我得到了这段代码,它的作用是询问学生人数,他们的姓名和分数,并显示最高和第二高的分数。
现在我的问题是,当我重复询问学生姓名和分数时,输入内容如何保存所有分数和姓名的记录,我怎么称呼它?如果语句逻辑在做什么呢?我没有得到那部分。
其余的迭代
现在在进一步迭代中,如果任何学生的分数大于新的
首先分配
然后为
希望我能解释清楚。
从给定数据(通常是数组)中查找最大和第二大的值。
这是一些类似的例子:
Finding-the-second-highest-number-in-array
Find two-max-numbers-in-array
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
public class Exercise_09 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of student: ");
int studentCount = input.nextInt();
input.nextLine();
String topSName = null;
double topSScore = 0;
String secondSName = null;
double secondSScore = 0;
for (int i = 0; i < studentCount; i++) {
System.out.print("Enter name for student #" + (i + 1) + ": ");
String s = input.next();
System.out.print("Enter score for student #" + (i + 1) + ": ");
double score = input.nextDouble();
if (score > topSScore) {
if (topSName != null) {
secondSName = topSName;
secondSScore = topSScore;
}
topSName = s;
topSScore = score;
} else if (score > secondSScore) {
secondSName = s;
secondSScore = score;
}
}
System.out.println("Top student " + topSName + "'s score is " + topSScore);
System.out.println("Second top student " + secondSName + "'s score is " + secondSScore);
}
}
好的,我得到了这段代码,它的作用是询问学生人数,他们的姓名和分数,并显示最高和第二高的分数。
现在我的问题是,当我重复询问学生姓名和分数时,输入内容如何保存所有分数和姓名的记录,我怎么称呼它?如果语句逻辑在做什么呢?我没有得到那部分。
最佳答案
这是您的if statements
在for循环中所做的事情。
但是在First Initialize变量之前:topScore = 0; secondSScore= 0;
(最低)。(我的建议:将其初始化为-1)。
内部循环:(现在,您的逻辑分为两个主要部分)
第一次迭代
获得学生分数。
如果score is greater than topScore then assign topScore the value of score.
(现在,在“第一次迭代”中,第一个学生的分数被设置为topScore,第二个也被设置为topScore(secondSScore))。
为什么?...因为topScore的值被初始化为小于第一个学生的分数的0(仅当第一个学生的分数未为零时)。到目前为止,这告诉我们根据接收到的数据,这是最高得分以及第二个topScore。(很合逻辑..)
// First iteration
if (score > topSScore) { // topSScore = 0
topSName = s;
topSScore = score;
} else if (score > secondSScore) { //secondSScore = 0
secondSName = s;
secondSScore = score;
}
其余的迭代
现在在进一步迭代中,如果任何学生的分数大于新的
topScore
,则首先分配
secondSScore the value of topSScore
if (topSName != null) {
secondSName = topSName;
secondSScore = topSScore;
}
然后为
topSSCore
分配学生分数的值,依此类推.... phew希望我能解释清楚。
从给定数据(通常是数组)中查找最大和第二大的值。
这是一些类似的例子:
Finding-the-second-highest-number-in-array
Find two-max-numbers-in-array
关于java - 当我们反复请求循环时如何存储输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34469121/
10-16 17:37