Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java if在共享名称和变量时遇到问题_Java - Fatal编程技术网

java if在共享名称和变量时遇到问题

java if在共享名称和变量时遇到问题,java,Java,下面的代码可以工作。问题是我还有很多东西要写。这是我可以“保存”贷款金额并将其放在{}之外的一种方式吗?在这之后,我应该问“你挣多少钱?”。这是一种我可以写(贷款+赚取)一次的方式,还是我必须对每个if单独写 public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); System.out.println("is it a full loan?"); String

下面的代码可以工作。问题是我还有很多东西要写。这是我可以“保存”贷款金额并将其放在{}之外的一种方式吗?在这之后,我应该问“你挣多少钱?”。这是一种我可以写(贷款+赚取)一次的方式,还是我必须对每个if单独写

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("is it a full loan?");
    String second = keyboard.next();

    {
        if (second.equalsIgnoreCase("yes")) {
            int loan = 8000;
            System.out.println(loan);
        }
    }

    if (second.equalsIgnoreCase("no")) {
        System.out.println("how much do you get");
        int loan = keyboard.nextInt();
        System.out.println(loan);
    }
}

首先使贷款在其“分配块”外可见。其次,使用
else
。应该是这样的-

String second = keyboard.next();
int loan = 0
if (second.equalsIgnoreCase("yes")) {
  loan = 8000;
} else {
  System.out.println ("how much do you get");
  loan = keyboard.nextInt(); 
}
System.out.println(loan);

您可以在“if”语句之外声明变量。但是,从风格上讲,更好的方法是使用提前返回的子例程,然后将其分配给变量:

int loan = promptForLoan();

// ...


private static int promptForLoan() {
   boolean isFullLoan = promptForBoolean("Is it a full loan?");
   if (isFullLoan) {
     return FULL_LOAN_AMOUNT;
   }

   return promptForInt("How much did you get?");
}

// ...

您应该继续将这些子例程分解为更小的子例程,以便每个函数只执行非常少量的工作(可能是一个或两个“if”或循环语句,一个或两个转换,等等)

如果用户说“true”、“肯定”或“yes”以外的不是“no”的内容时需要错误该怎么办?@MichaelAaronSafyan对我来说似乎是一个用户培训、文档和/或UI工作的机会!OP的帖子包括两个选项-是/否(对我来说,这似乎是一个适合
else
的好地方)。我的观点是,if…else确实需要重构,这样您就可以对转换为布尔值的结果进行操作,例如,可以对输入而不是.equalsIgnoreCase()的输出进行重新编译。