当前位置: 首页 > 知识库问答 >
问题:

为什么整数输入后的字符串输入在Java中被跳过?[重复]

赏开宇
2023-03-14

我试图在Java中输入某些字符串和整数变量的值。但是,如果我在整数之后输入字符串,那么在控制台中,字符串输入将被跳过并移动到下一个输入。

这是密码

String name1;
int id1,age1;

Scanner in = new Scanner(System.in);

//I can input name if input is before all integers

System.out.println("Enter id");
id1 = in.nextInt();


System.out.println("Enter name");       //Problem here, name input gets skipped
name1 = in.nextLine();

System.out.println("Enter age");
age1 = in.nextInt();

共有3个答案

狄峻熙
2023-03-14

也许你可以这样试试。。

而不是这个代码

       System.out.println("Enter name");       //Problem here, name input gets skipped
       name1 = in.nextLine();

试试这个

       System.out.println("Enter name");      
       name1 = in.next();
壤驷雅达
2023-03-14

这是您更新的工作代码。

 package myPackage;

    import java.util.Scanner;

    public class test {

        /**
         * @param args
         */
        public static void main(String[] args) {
            String name1;
            int id1,age1;

            Scanner in = new Scanner(System.in);

            //I can input name if input is before all integers

            System.out.println("Enter id");
            id1 = in.nextInt();


            System.out.println("Enter name");       //Problem here, name input gets skipped
            name1 = in.next();

            System.out.println("Enter age");
            age1 = in.nextInt();

        }

    }
濮阳弘扬
2023-03-14

这是一个常见问题,因为nextLine方法不读取输入的换行符,所以当您发出命令nextLine时,扫描仪会找到换行符并将其作为一行提供给您。

一个变通方法可以是这样的:

System.out.println("Enter id");
id1 = in.nextInt();

in.nextLine();   // skip the newline character

System.out.println("Enter name");
name1 = in.nextLine();

另一种方法是始终使用nextLine包装成整数。parseInt

int id1;
try {
    System.out.println("Enter id");
    id1 = Integer.parseInt(input.nextLine());
} catch (NumberFormatException e) {
    e.printStackTrace();
}
System.out.println("Enter name");
name1 = in.nextLine();

我不会使用扫描仪。next(),因为这将只读取下一个标记,而不是整行。例如,以下代码:

System.out("Enter name: ");
String name = in.next();
System.out(name);

将产生:

Enter name: Mad Scientist
Mad

它不会处理科学家,因为疯狂本身已经是一个完整的令牌。因此,也许这是您的应用程序的预期行为,但它与您在问题中发布的代码具有不同的语义。

 类似资料:
  • 这是Person类。 这是Employee类。

  • 问题内容: System.out.print(“Name : “); String name = in.nextLine(); 输出将是: 名称:测试 年龄:20 建立成功 当我调试它们时,它不会读取“ city”的用户输入。但是,当我将“年龄”的数据类型更改为字符串时,它将读取。我如何在读取城市用户输入的系统中将age的数据类型保持为整型? 问题答案: 读取年龄后,由于缓冲区中仍然有换行符,请将

  • 我是一个绝对的初学者,没有任何编程语言的经验。 我写了一个程序作为将阿拉伯数字转换成罗马数字的练习。它起作用了。然而,如果输入的是字符串而不是整数,我想添加一部分来处理这个问题。我不知道该怎么做。我试图使用try/catch,但我不知道如何正确使用它。现在程序要求我输入两次数字。怎么办? 以下是他的主要方法:

  • 我是一个学生,我有一个小问题验证输入。 我试过的是把字符串解析成double的测试,但我做不到。我不知道如何测试双倍是否只是数字。 请给我一个我该做什么的线索。

  • 问题内容: 我有以下html5输入元素: 为什么此输入允许在输入字段中输入字符“ e”?没有其他字母字符可以输入(按预期方式) 使用chrome v.44.0.2403.107 问题答案: 因为这正是规范所说的应该工作的方式。输入的数字可以接受浮点数,包括负号和或字符(其中指数是或后面的数字): 浮点数按以下顺序由以下部分组成: 可选地,第一个字符可以是“ ”字符。 “ ” 范围内的一个或多个字符

  • 我正在尝试制作一个计算某人所做步数的程序(如果这个数字更大或等于10000,程序就应该停止),但我似乎找不到一种方法来键入“回家”,然后输入到家所必需的步数。