使用if语句为变量赋值

时间:2019-11-08 07:38:17

标签: java if-statement boolean

假设我想给名为 involved 的变量赋值true,如果另一个变量(例如名为p的变量)的值在50到150之间。我该怎么做?

我尝试了以下操作:

导入java.util.Scanner;

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    int p = scan.nextInt();

    boolean involved; 

    if (p >= 50 && p <= 150) {
        involved = true; 
        System.out.println(included);
    }

}

但是,当我尝试此操作时,我得到upp错误:变量p可能未初始化。我在做什么错了?

5 个答案:

答案 0 :(得分:0)

System.out.println(included);更改为System.out.println(involved );。因为未定义“包含”。

答案 1 :(得分:0)

涉及的任何内容都被错误地写为包含在您的代码中,或者您打算在sysout中放入字符串“ included”:

        boolean involved; 

        if (p >= 50 && p <= 150) {
            involved = true; 
            System.out.println(involved);
        }

boolean involved; 

if (p >= 50 && p <= 150) {
    involved = true; 
    System.out.println("included");
}

答案 2 :(得分:0)

您可以尝试以下方法:

Scanner sc = new Scanner(System.in);
boolean involved;
System.out.println("Enter a number: ");
int n = sc.nextInt();

if (n >= 50 && n <= 150) {
    involved = true;
} else {
    involved = false;
}
System.out.println(involved);

答案 3 :(得分:0)

您也可以直接执行此操作而无需if-else:

Scanner scan = new Scanner(System.in);
int p = scan.nextInt();

boolean involved = (p >= 50 && p <= 150);

答案 4 :(得分:0)

您的代码看起来不错,除了println语句(该语句试图打印不存在的变量)。

需要改进的地方:

  • 扫描仪应该关闭:我们可以使用所谓的try-with-resources语句:try (Scanner scan = new Scanner(System.in))。离开try区域后,这会自动为您关闭扫描仪。此处更多信息:https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
  • 正如另一个用户指出的那样:在有条件地分配变量时,我们可以使用比较作为赋值,而不是使用if / else。

这是最终代码:

    public static void main(String[] args) {
        try (Scanner scan = new Scanner(System.in)) {
            int p = scan.nextInt();
            boolean involved = (p >= 50 && p <= 150);
            System.out.println(involved);
        }
    }

顺便说一句,您还应该检查用户输入的值确实是一个整数。如果我现在输入值“ a”,我将得到一个InputMismatchException。最简单的方法是捕获该异常,向用户提供适当的错误消息,然后退出程序。

这是我要怎么做:

    public static void main(String[] args) {
        try (Scanner scan = new Scanner(System.in)) {
            int p;
            try {
                p = scan.nextInt();
            }catch(InputMismatchException e) {
                System.out.println("Value not an integer");
                return;
            }
            boolean involved = (p >= 50 && p <= 150);
            System.out.println(involved);
        }
    }

希望这会有所帮助!