import java.util.Scanner;
public class Find2Max {
public void run() {
Scanner sc = new Scanner(System.in);
System.out.print("Enter the number of at least 2 students: ");
int number_of_students = sc.nextInt();
if(number_of_students < 2){
number_of_students = 2;
}
do{
double top_grade = 0;
double second_top_grade = 0;
String top_kid = "";
String second_top_kid= "";
for(int ii = 0; ii < number_of_students; ii++){
System.out.print("Enter a student name: ");
String student_name = sc.nextLine();
System.out.print("Enter a student score: ");
Double student_grade = sc.nextDouble();
if(student_grade > top_grade){
top_kid = student_name;
top_grade = student_grade;
}
else if(student_grade > second_top_grade && student_grade < top_grade){
second_top_grade = student_grade;
second_top_kid = student_name;
}
else{
student_grade = 0.00;
student_name ="";
}
}
System.out.println("Top two students: ");
System.out.println( top_kid + "'s score is " + top_grade);
System.out.println(second_top_kid + "'s score is " + second_top_grade);
}while(number_of_students >= 2);
}
public static void main(String[] args){
Find2Max test = new Find2Max();
test.run();
}
}
我努力解决问题,我真的很接近,但我很困惑为什么我的程序似乎跳过,没有读取输入学生姓名部分我的输入。当学生数为1时,似乎也有这个问题。任何帮助都将不胜感激!:]
原始代码有许多问题:
下面是一个稍微改进的版本,增加了一些额外的新行,使输出更易读。允许程序优雅地退出的一个修改是,如果提供的学生人数少于2人就退出,而不是人为地将人数设置为2人。第三条else
语句被注释掉,因为不需要。
public class Find2Max {
public void run() {
Scanner sc = new Scanner(System.in);
System.out.print("\nEnter the number of students (at least 2 required for comparison): ");
int number_of_students = sc.nextInt();
if(number_of_students < 2){
System.out.println("\nThis program compares scores for 2 or more students.");
// number_of_students = 2;
return;
}
do{
double top_grade = 0;
double second_top_grade = 0;
String top_kid = "";
String second_top_kid= "";
for(int ii = 0; ii < number_of_students; ii++){
System.out.print("\nEnter a student name: ");
String student_name = sc.next();
System.out.print("Enter a student score: ");
Double student_grade = sc.nextDouble();
if(student_grade >= top_grade){
if(top_grade >= second_top_grade) { // Save this grade as the second top
second_top_kid = top_kid;
second_top_grade = top_grade;
}
top_kid = student_name;
top_grade = student_grade;
}
else if(student_grade > second_top_grade && student_grade < top_grade){
second_top_grade = student_grade;
second_top_kid = student_name;
}
// else{
// student_grade = 0.00;
// student_name ="";
// }
}
System.out.println("\nTop two students: ");
System.out.println( top_kid + "'s score is " + top_grade);
System.out.println(second_top_kid + "'s score is " + second_top_grade);
}while(number_of_students >= 2);
}
public static void main(String[] args){
Find2Max test = new Find2Max();
test.run();
}
}
问题内容: 我正在编写一个使用Event类的程序,该类中有一个日历实例和一个String类型的描述。创建事件的方法使用扫描仪获取月,日,年,小时,分钟和说明。我遇到的问题是Scanner.next()方法仅返回空格之前的第一个单词。因此,如果输入为“我的生日”,则该事件实例的描述就是“我的”。 我做了一些研究,发现人们使用Scanner.nextLine()解决此问题,但是当我尝试这样做时,它只是
这里是Java新手,尝试扫描下面表单中的输入: 3 3 3 101 000 101 拜托,有更有经验的人能教我如何解决这个问题吗?我发现一些问题与。nextline()和。nextint()有类似的问题,但不完全是这样。不过,如果真的是复制品,我提前道歉... (如果需要,我会添加更多信息)
我这里有两个代码块。一个扫描器正确地等待用户输入,另一个则直接通过它并调用,返回。下面是工作的块: 下面是没有的块: 这两个都是单独的类,并且是从另一个类中的main方法调用的。基本上,调用,后者又调用某个Player类的方法...这是非工作代码所在的地方。程序中是否有不适合接受输入的时候?我的印象是,任何时候我需要用户输入,我都可以使用这种方法。谢谢!
作为一个文本块并按enter键,我如何创建一个包含这三行的字符串? 使用scanner.nextLine()只能得到第一行。
问题内容: 我正在使用Java的扫描仪读取用户输入。如果我仅使用nextLine一次,那就可以了。使用两个nextLine时,第一个不会等待用户输入字符串(第二个会输入)。 输出: X:Y :(等待输入) 我的密码 任何想法为什么会发生这种情况?谢谢 问题答案: 您可能像以前那样调用方法。这样的程序是这样的: 演示您所看到的行为。 问题是不消耗,因此下一个调用将消耗它,然后等待读取的输入。 您需要