繁体   English   中英

使用 if 语句为变量赋值

[英]Assigning a value to a variable using if statement

假设如果另一个变量(例如名为 p 的变量)的值介于 50 和 150 之间,我想为涉及的变量分配值 true。我该怎么做?

我尝试了以下方法:

导入 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);
    }

}

然而,当我尝试这个时,我得到了错误:变量 p 可能没有被初始化。 我究竟做错了什么?

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

所涉及的要么是错误地包含在您的代码中,要么是您打算在 sysout 中放置一个字符串“包含”:

        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");
}

你可以试试这个:

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);

您也可以不使用 if-else 直接执行此操作:

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

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

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

需要改进的几点:

  • Scanner 应该关闭:我们可以使用所谓try-with-resources语句: try (Scanner scan = new Scanner(System.in)) 离开try块后,这会自动为您关闭 Scanner。 更多信息在这里: 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);
        }
    }

顺便说一句,您还应该检查用户输入的值是否真的是 int。 如果我现在输入值“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);
        }
    }

希望这可以帮助!

暂无
暂无

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

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