- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以我的程序有问题。如果我删除 in.nextLine
,println 的名字和姓氏将一个接一个地打印,如果我有它,它不会在我的输出中打印名字,因为我认为它正在删除它。任何帮助将不胜感激。
import java.util.*;
public class Main
{
public static void main(String[] args)
{
//Utilities
Scanner in = new Scanner(System.in);
//Variables
int studentId = 0;
String lastName = "";
String firstName = "";
String gradeLetter = "";
String quit = "";
double userHomeworkScore = 0.0;
double userQuizzesScore = 0.0;
double userMidTermScore = 0.0;
double userFinalScore = 0.0;
double homeworkScore = 0.0;
double quizzesScore = 0.0;
double midTermScore = 0.0;
double finalScore = 0.0;
double totalScore = 0.0;
do {
System.out.println("Please enter Student ID");
studentId = in.nextInt();
System.out.println("Please enter first name");
firstName = in.nextLine();
in.nextLine();
System.out.println("Please enter last name");
lastName = in.nextLine();
System.out.println("Please enter score for the assignments");
userHomeworkScore = in.nextDouble();
System.out.println("Please enter score for the quizzes");
userQuizzesScore = in.nextDouble();
System.out.println("Please enter score for the midterm");
userMidTermScore = in.nextDouble();
System.out.println("Please enter score for the final");
userFinalScore = in.nextDouble();
String fullName = (firstName + "," + lastName);
homeworkScore = (userHomeworkScore * 0.50);
quizzesScore = (userQuizzesScore * 0.20);
midTermScore = (userMidTermScore * 0.10);
finalScore = (userFinalScore * 0.20);
totalScore = (homeworkScore+quizzesScore+midTermScore+finalScore);
if (totalScore >= 90)
{
gradeLetter = "A";
}
else if (totalScore >= 80)
{
gradeLetter = "B";
}
else if (totalScore >= 70)
{
gradeLetter = "C";
}
else if (totalScore >= 60)
{
gradeLetter = "D";
}
else
{
gradeLetter = "E";
}
//Output
System.out.println(""+fullName+"");
System.out.println("Student ID:" + studentId + "");
System.out.println("Homework:" + homeworkScore + "");
System.out.println("Quizzes:" + quizzesScore + "");
System.out.println("Midterm:" + midTermScore + "");
System.out.println("Final:" + finalScore + "");
System.out.println("Total Score: " + totalScore + " Grade: " + gradeLetter + "");
System.out.println("Press any key to enter another student or enter q to quit.");
quit = in.nextLine();
in.nextLine();
}while(!quit.equalsIgnoreCase("q"));
}
最佳答案
您需要在读取整数后“刷新”缓冲区。原因是当您使用 in.nextInt()
时,它只读取 int 值并跳过“\n”(行尾),使用 in.nextLine()
将消耗“\n”。
使用这个
System.out.println("Please enter Student ID");
studentId = in.nextInt();
in.nextLine();
当然还有在读完最后一本书之后
System.out.println("Please enter score for the final");
userFinalScore = in.nextDouble();
in.nextLine();
您不需要在两条线读数之间“冲洗”。这是错误的:
System.out.println("Please enter first name");
firstName = in.nextLine();
in.nextLine();
System.out.println("Please enter last name");
lastName = in.nextLine();
另一种解决方案:您可以使用 in.next()
来读取字符串。in.next()
从扫描器中查找并返回下一个完整的标记。
虽然 in.nextLine()
由于此方法继续搜索输入以查找行分隔符,如果不存在行分隔符,它可能会缓冲所有输入以搜索要跳过的行.
Scanner in = new Scanner(System.in);
//Variables
int studentId = 0;
String lastName = "";
String firstName = "";
String gradeLetter = "";
String quit = "";
double userHomeworkScore = 0.0;
double userQuizzesScore = 0.0;
double userMidTermScore = 0.0;
double userFinalScore = 0.0;
double homeworkScore = 0.0;
double quizzesScore = 0.0;
double midTermScore = 0.0;
double finalScore = 0.0;
double totalScore = 0.0;
do {
System.out.println("Please enter Student ID");
studentId = in.nextInt();
System.out.println("Please enter first name");
firstName = in.next();
System.out.println("Please enter last name");
lastName = in.next();
System.out.println("Please enter score for the assignments");
userHomeworkScore = in.nextDouble();
System.out.println("Please enter score for the quizzes");
userQuizzesScore = in.nextDouble();
System.out.println("Please enter score for the midterm");
userMidTermScore = in.nextDouble();
System.out.println("Please enter score for the final");
userFinalScore = in.nextDouble();
String fullName = (firstName + "," + lastName);
homeworkScore = (userHomeworkScore * 0.50);
quizzesScore = (userQuizzesScore * 0.20);
midTermScore = (userMidTermScore * 0.10);
finalScore = (userFinalScore * 0.20);
totalScore = (homeworkScore+quizzesScore+midTermScore+finalScore);
if (totalScore >= 90)
{
gradeLetter = "A";
}
else if (totalScore >= 80)
{
gradeLetter = "B";
}
else if (totalScore >= 70)
{
gradeLetter = "C";
}
else if (totalScore >= 60)
{
gradeLetter = "D";
}
else
{
gradeLetter = "E";
}
//Output
System.out.println(""+fullName+"");
System.out.println("Student ID:" + studentId + "");
System.out.println("Homework:" + homeworkScore + "");
System.out.println("Quizzes:" + quizzesScore + "");
System.out.println("Midterm:" + midTermScore + "");
System.out.println("Final:" + finalScore + "");
System.out.println("Total Score: " + totalScore + " Grade: " + gradeLetter + "");
System.out.println("Press any key to enter another student or enter q to quit.");
quit = in.next();
}while(!quit.equalsIgnoreCase("q"));
输出:
Please enter Student ID
1
Please enter first name
a
Please enter last name
b
Please enter score for the assignments
100
Please enter score for the quizzes
100
Please enter score for the midterm
100
Please enter score for the final
100
a,b
Student ID:1
Homework:50.0
Quizzes:20.0
Midterm:10.0
Final:20.0
Total Score: 100.0 Grade: A
Press any key to enter another student or enter q to quit.
q
关于java - 清除缓冲区,输出名字,姓氏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738886/
我有两个表,Table1和Table2。 Table1由格式为FullName的名称列('FirstName LastName')和唯一标识符(Key)组成。 Table2的列(Name)由这些名称组
我正在使用 ajax 实时搜索来选择名称和姓氏的串联与输入的文本匹配的所有用户,并且效果很好: $sql = "SELECT * FROM users WHERE concat(name,' ',su
我有一组采用 last, first 格式的名称 Name Pos Team Week.x Year.x GID.x h.a.x Oppt.x Week1Points DK.
我有一个函数,如果我有姓氏和名字,它应该返回 True。 此名称返回 False,但应返回 True。任何想法为什么?我希望能够在名称 A-Z、a-z、下划线和 0-9 中接受撇号。逗号前后可能有也可
我有一个 drupal 数据库,其中 node 表充满了配置文件。字段node.title是“Firstname Lastname”。我想分隔名称,以便 node.title = "Firstname
我正在使用 Django-Registration 包让用户创建帐户、对其进行身份验证并登录到我的 web 应用程序。 但是,用于创建帐户的表单/ View 不会要求用户提供名字/姓氏(这些字段是模型
我正在尝试使用云工具包获取用户的名字,但是以下代码未获取用户的名字,并且将firstNameFromFunction变量保留为空。有谁知道如何在iOS 10中实现这一目标? let container
运行应用程序时出现以下错误: 错误: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'pa
我想尝试在 Javascript 中检测一个人名字的不同部分,并将它们剪掉,以便我可以将它们传递给其他东西。 名称可以以任何格式出现——例如:- 维多利亚·米·莱恩小姐 Victoria C J Lo
这是我读过的教程中的查询 CREATE TABLE Employee ( id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, depa
所以我的程序有问题。如果我删除 in.nextLine,println 的名字和姓氏将一个接一个地打印,如果我有它,它不会在我的输出中打印名字,因为我认为它正在删除它。任何帮助将不胜感激。 impor
我专门使用omniauth来允许使用facebook/google/twitter登录到我的网站。 我存储名字,姓氏和电子邮件。但是,当我从oauth引发twitter auth哈希时,我仅在auth
我有一个看起来有点像这样的 df: name id John McNamara 3498 Jane Adams,
我有一个大数据集,我知道其中包含许多重复记录。基本上我有关于名字、姓氏、不同地址组成部分和出生日期的数据。 我认为最好的方法是使用姓名和出生日期,因为如果这些都匹配,则很可能是同一个人。可能有很多情况
我知道这是一件非常简单的事情,但我无法弄清楚我遗漏了什么或做错了什么。我认为这可能与 char 变量有关。这是我到目前为止所拥有的: #include #include "stdafx.h" #inc
我正在尝试使用以下代码获取电话联系人中所有可用联系人的详细信息。但面临重复值的小问题。 已编辑 实际代码开始:- private String refreshData() { Stri
我正在尝试实现对数据表的搜索。现在,我只能搜索名字、中间名和姓氏等。但是,在搜索全名(中间名和姓氏)时,搜索将不起作用。图像: success search for firtname/middle/l
Magento 是否可以通过客户的公司名称以及联系人姓名来查看/管理我们的客户,以便轻松找到他们?它用于 B2B,因此当电子邮件发出时,他们会提取客户的姓名,而不是更合适的公司名称。 这是全局设置吗?
我正在尝试实现对数据表的搜索。现在,我只能搜索名字、中间名和姓氏等。但是,在搜索全名(中间名和姓氏)时,搜索将不起作用。图像: success search for firtname/middle/l
我想检查用户输入的命令如: 添加人员关系人员(人员可以是例如 John 或“John Smith”) 示例:添加 John Smith 兄弟 Jack Smith... 我使用分隔符(空格)将字符串拆
我是一名优秀的程序员,十分优秀!