Java 获取精确的int和字符串输入
在读取int之后,我很难从用户处读取字符串。基本上,我必须从用户处获取int,然后是几个字符串。我可以成功地获取用户的int。但是,当我开始询问字符串(作者、主题等)时,我的扫描仪会“跳过”第一个字符串输入 例如,我的输出如下所示: 输入您的选择: 2. 输入作者: 输入主题: 主题 如您所见,用户永远无法输入作者,而我的扫描程序将null存储到作者字符串中 以下是生成上述输出的代码:Java 获取精确的int和字符串输入,java,input,io,user-input,java.util.scanner,Java,Input,Io,User Input,Java.util.scanner,在读取int之后,我很难从用户处读取字符串。基本上,我必须从用户处获取int,然后是几个字符串。我可以成功地获取用户的int。但是,当我开始询问字符串(作者、主题等)时,我的扫描仪会“跳过”第一个字符串输入 例如,我的输出如下所示: 输入您的选择: 2. 输入作者: 输入主题: 主题 如您所见,用户永远无法输入作者,而我的扫描程序将null存储到作者字符串中 以下是生成上述输出的代码: String author; String subject; int choice;
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)问题在于,当您使用
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();
这很好用。
尽管在制作之前的类似于下面的程序时,它不是必需的。有人能解释一下吗
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);