gpt4 book ai didi

Java 代码中的 java.util.NoSuchElementException

转载 作者:行者123 更新时间:2023-12-01 22:04:07 25 4
gpt4 key购买 nike

我收到此异常:

Please provide width: 4
Please provide height: Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at rr.fr.op.lab.prob1.Rectangle.scanner(Rectangle.java:51)
at rr.fr.op.lab.prob1.Rectangle.main(Rectangle.java:31)

我的代码是:

package rr.fr.op.lab.prob1;
import java.util.Scanner;
public class Rectangle {

public static void main(String[] args) {

if(args.length != 2 && args.length != 0){
System.err.println("Invalid number of arguments was provided.");
System.exit(1);

double a = Double.parseDouble(args[0]);
double b = Double.parseDouble(args[1]);

double area = area(a,b);
double perimeter = perimeter(a,b);

System.out.println("You have specified a rectangle of width " + a + " and height "
+ b + ". Its area is " + area + " and its perimeter is " + perimeter);
}

double x,y,z;
if(args.length == 0){
System.out.printf("Please provide width: ");
x = scanner();
System.out.printf("Please provide height: ");
y = scanner();
}
}

private static double area(double a, double b){
return a*b;
}

private static double perimeter(double a, double b){
return 2*(a+b);
}

private static double scanner (){
Scanner sc = new Scanner (System.in);
double number = sc.nextDouble();
sc.close();
return number;
}
}

之后,我想使用方法trim()来删除空格。那可能吗?而且,我也需要 isEmpty() 方法。该代码必须计算矩形的面积和周长。输入形式为键盘或命令行。

最佳答案

使用后关闭扫描仪。这也会关闭底层流,在本例中为 System.in,因为它实现了 Closeable

当您下次创建扫描仪时,System.in 已关闭,因此您无法从中读取更多元素。

创建一个扫描仪并多次重复使用它。

<小时/>

如果您没有打开流(或者您可能泄漏了引用),则关闭它被认为是一种不好的做法。

可能还有其他代码依赖于打开的流,因此关闭它可能会导致该代码失败。众所周知,远离此类原因的故障很难调试。

不幸的是,很容易无意中关闭流,因为 Scanner、BufferedInputStream 等类在关闭时会关闭其底层流。

关于Java 代码中的 java.util.NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33117788/

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