繁体   English   中英

比较用户输入和整数

[英]Compare user input with integer

我正在编写一个程序,向用户询问一个简单的数学问题,它必须告诉他们是正确的还是错误的。 我遇到错误

package exercises;

import java.util.Scanner;
public class Exercises {


    public static void main(String[] args) {
        Scanner user_input = new Scanner (System.in);
        String number;
        System.out.println("Consider the following equation: 5x - 10");
        System.out.println("Solve for x.")
        number = user_input.next();

        if (number == 2);{
            System.out.println("Correct.");

        }else{
            System.out.println("Incorrect. The answer is 2.");
        }

}

您的代码有两个主要问题和一个小问题。


如果使用分号

第一个是if语句后的分号。 分号完成if语句,它是不带花括号的if语句的缩写,例如:

if (a > b) doMethod();

通过省略表达式并仅写分号,您可以表示有效的NOP (无操作),因此

if (a > b) ;

是有效的语句,基本上不执行任何操作。

你可能打算

if (number == 2) {
    System.out.println("Correct.");
} else {
    System.out.println("Incorrect. The answer is 2.");
}

比较方式

另一个问题是您的number变量是String但是将其与int进行了比较。 那行不通,结果永远是false 您需要将String转换为int ,反之亦然,以进行比较。

请注意,使用==StringString比较无法正常工作(请参见如何在Java中比较字符串? )以获取详细信息,请改用String#equals

所以一种可能是StringString

String number = user_input.next();

if (number.equals("2")) {

另一个是intint

String number = user_input.next();
int asValue = Integer.parseInt(number);

if (asValue == 2) {

或直接使用Scanner#nextInt

int number = user_input.nextInt();

if (number == 2) {

缺少分号

较小的问题是您在执行以下语句后忘记了分号

System.out.println("Solve for x.") // Semicolon needed

在Java中,每个表达式都必须以分号结尾,这是一种严格的语言。

您有两个语法错误,都与分号有关;

第一个错误是这行System.out.println("Solve for x.") 在Java中,每个语句必须以;结尾; 这行必须是System.out.println("Solve for x.");

第二个错误是在if语句中: if (number == 2);{ 您应该在小括号后删除分号。 正确的代码行是if (number == 2) {

您正在尝试将number它是一个字符串)与一个整数进行比较,这是不可能完成的,这里有两个选择

1)从System.in读取一个整数

public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        String number;
        System.out.println("Consider the following equation: 5x - 10");
        System.out.println("Solve for x.");
        number = user_input.next();

        if (Integer.parseInt(number) == 2) {
            System.out.println("Correct.");

        } else {
            System.out.println("Incorrect. The answer is 2.");
        }
    }

2)将number解析为整数,然后将其与int进行比较

public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        int number;
        System.out.println("Consider the following equation: 5x - 10");
        System.out.println("Solve for x.");
        number = user_input.nextInt();

        if (number == 2) {
            System.out.println("Correct.");

        } else {
            System.out.println("Incorrect. The answer is 2.");
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM