在读取int后,我无法从用户读取字符串。基本上我必须从用户获得一个int,然后是几个字符串。我可以成功获得用户的int。但是,当我开始要求字符串(作者,主题等等)时,我的扫描仪会“跳过”第一个字符串输入。
例如,我的输出如下所示: 输入您的选择: 2 输入作者: 输入主题: 受试者
如您所见,用户永远无法进入作者,我的扫描仪会将null存储到作者字符串中。
以下是产生上述输出的代码:
String author;
String subject;
int choice;
Scanner input = new Scanner(System.in);
System.out.println("Enter choice:");
choice = input.nextInt();
System.out.println("Enter author:");
author = input.nextLine();
System.out.println("Enter subject:");
subject = input.nextLine();
非常感谢任何帮助。谢谢! -Preston Donovan
答案 0 :(得分:3)
问题在于,当您使用readLine
时,它会从最后一个读取令牌读取到包含该令牌的当前行的末尾。它不会自动移动到下一行,然后读取整行。
一致地使用readLine
并在适当的时候将字符串解析为整数,或者对readLine
添加额外的调用:
System.out.println("Enter choice:");
choice = input.nextInt();
input.nextLine(); // Discard the rest of the line.
System.out.println("Enter author:");
author = input.nextLine();
答案 1 :(得分:0)
这完美无缺。 虽然虽然不需要像以前的程序那样制作以前的程序。谁能解释一下呢?
import java.util.Scanner;
public class Average Marks {
public static void main(String[] args) {
Scanner s = new Scanner ( System.in);
System.out.print("Enter your name: ");
String name=s.next();
System.out.print("Enter marks in three subjects: ");
int marks1=s.nextInt();
int marks2=s.nextInt();
int marks3=s.nextInt();
double average = ( marks1+marks2+marks3)/3.0;
System.out.println("\nName: "+name);
System.out.println("Average: "+average);