提问人:DilLip_Chowdary 提问时间:1/28/2023 最后编辑:HolgerDilLip_Chowdary 更新时间:4/28/2023 访问量:50
无法使用命令行参数将输入传递给 Java 程序中的多个方法
Unable to Pass input to multiple methods in a Java program using command line arguments
问:
我使用以下命令将输入传递给 java 程序:
java Main - <"input.txt" > "output.txt"
使用此方法时,输入仅由第一种方法 (main) 接收
代码:
import java.util.Scanner;
import java.util.Arrays;
class Main {
public static int read() {
Scanner input = new Scanner(System.in);
int num2 = input.nextInt();
System.out.println(num2);
return num2;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num1 = input.nextInt();
System.out.println(num1);
read();
}
}
输入input.txt内容:
1
2
预期输出:
1
2
实际输出
1
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Main.read(main.java:7)
at Main.main(main.java:16)
答:
1赞
Tim Moore
1/28/2023
#1
这可以通过重用 的单个实例来解决,而不是在方法中创建一个新实例:Scanner
read
import java.util.Scanner;
import java.util.Arrays;
class Main {
public static int read(Scanner input) {
int num2 = input.nextInt();
System.out.println(num2);
return num2;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num1 = input.nextInt();
System.out.println(num1);
read(input);
}
}
这将产生预期的输出,并且不会引发异常。
评论
0赞
DilLip_Chowdary
1/28/2023
我们如何在不更改代码的情况下做到这一点
0赞
Tim Moore
1/29/2023
@DilLip_Chowdary代码有问题,我认为没有解决方法。
0赞
DilLip_Chowdary
1/30/2023
我们能够在手动输入传递的情况下成功运行上述命令,只有在使用文件通过 cli 传递时才会出现此问题。
1赞
Holger
4/28/2023
@DilLip_Chowdary在一个合法用例中有效但在另一个合法用例中不起作用的代码仍然被破坏。当您将数字放入两行并在插入两行之间等待时,您的代码恰好可以工作,但是当您一次复制和粘贴两行(或假设输入两行太快)时,手动输入行时,它也会中断。在一行中输入数字时,它也会中断。要点是,是缓冲的,对同一源使用多个可能会造成数据丢失或不一致的情况。Scanner
Scanner
评论
read