gpt4 book ai didi

java - 使用 Scanner 类时是否创建引用变量?

转载 作者:行者123 更新时间:2023-12-01 13:43:50 26 4
gpt4 key购买 nike

通常,扫描仪输入的编码如下:

import java.util.Scanner;

public class ScannerWithReference {
public static void main(String[] args) {
System.out.println("Enter a double value: ");

Scanner input = new Scanner(System.in);
double newValue = input.nextDouble();

System.out.println(newValue);
}
}

但是,您也可以这样写:

import java.util.Scanner;

public class ScannerWithoutReference {
public static void main(String[] args) {
System.out.println("Enter a double value: ");

double newValue = new Scanner(System.in).nextDouble();

System.out.println(newValue);
}
}

两个程序都从同一输入打印出 double 值。我明白为什么这有效。我还了解创建引用变量输入允许我使用 input.close() 来防止资源泄漏。

但是,我不知道什么时候该采用第一种方式或第二种方式。我通常看到它是用第一种方式写的。我能否澄清为什么有些人会以第二种方式编写此代码?

最佳答案

我总是会用第一种方法。在我看来,由于扫描仪未读取双值而导致崩溃的可能性与实际读取双值的可能性一样。

始终练习防御性编程。

java.util.Scanner;
java.util.InputMismatchException;

public class ScannerWithReference {
public static void main(String[] args) {
double newValue = 0.0;
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a double value: ");

try {
newValue = scanner.nextDouble();
System.out.println("Thanks for the double");
}
catch (InputMismatchException e) {
System.out.println("Sorry not a dobule, try again");
}

scanner.close();
}
}

关于java - 使用 Scanner 类时是否创建引用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20486713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com