java - 字符(运算符)的扫描仪输入如何工作?

标签 java char java.util.scanner charat

我写了一段关于用户输入的操作符结果的代码,请解释一下这个字符输入是如何工作的,因为当我使用时

char operation = s.nextLine().charAt(0);

而不是

char operation = s.next().charAt(0);

Eclipse 显示错误。

代码-

    System.out.println("Enter First Number:");
    int a = s.nextInt();

    System.out.println("Enter Second Number:");
    int b = s.nextInt();

    System.out.println("Which Operation you want to execute?");
    s.hasNextLine();
    char operation = s.next().charAt(0);    

    int result = 0;

    switch (operation) {
    case '+' :
        result = a + b;
        break;
    case '-' :
        result = a - b;
        break;
    case '*' :
        result = a * b; 
        break;
    case '/' :
        result = a / b;
        break;
    case '%' :
        result = a % b;
        break;
    default:
        System.out.println("Invalid Operator!");
    }
    System.out.println(result);
    s.close();
}

}

最佳答案

问题不是因为s.nextLine();相反,这是因为 s.nextInt()。检查Scanner is skipping nextLine() after using next() or nextFoo()?了解更多信息。

使用

int a = Integer.parseInt(s.nextLine());

而不是

int a = s.nextInt();

我建议您创建一个实用函数,例如getInteger 创建于 this answer也可以处理特殊情况。

关于java - 字符(运算符)的扫描仪输入如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61302019/

相关文章:

Java:java.util.NoSuchElementException

java - 无法在 Spring Boot 中注册 Gson TypeAdapter

java - Mongodb文档格式一致性

c++ - 将 char* 转换为 uint8_t

java - 阅读器不会停止在我的程序中(java)

java - 扫描器不想读取西里尔文内容

java - 根据其中的值的增加和减少来拆分未排序的列表

java - 调用init方法失败;嵌套异常是 java.lang.IllegalArgumentException : The namespace property is required

java - 尝试在整数后添加字符然后打印结果时出现奇怪的结果

c++ - vector 中 pair 元素的数据类型是什么?