提问人:Arnab Kar 提问时间:10/14/2022 最后编辑:Arnab Kar 更新时间:10/14/2022 访问量:86
如何在两种方法中使用格式化输入对两个不同的扫描仪使用相同的输入
how to use the same input for two different scanners in two methods with formatted input
问:
我意识到问题是由于我创建了一个新的扫描仪/读取器对象(新扫描仪有一个空白输入),问题仍然存在 - 我如何对两种方法使用相同的输入流(或)如何对两种方法使用相同的扫描仪读取器
原始问题:如何将主方法输入流传递给被调用的方法
所以我正在接受格式化的输入,就像极客的极客一样(这对我的错误很重要)
1
4
1 2 3 4
我正在使用 scanner 类将数字读入变量中。这是我的代码
// code to print reverse of input string after reading the length of the string and no. of testcases
class Main {
public static void main (String[] args) {
int i,t,n;
String x,y;
Scanner scan = new Scanner(System.in);
try {
t=scan.nextInt();
scan.nextLine();
REV rv=new REV();
for (i=0;i<t;i++){
rv.reverse();
}
}catch (Exception e){
return;
}
}
}
class REV{
public void reverse(){
int i,a[],n;
Scanner scan = new Scanner(System.in);
try {
n=scan.nextInt();
scan.nextLine()
a= new int[n];
for (i=n-1;i>=0;i--){
a[i]=scan.nextInt();
}
System.out.println(a[i]);
}catch(Exception E){
return;
}
}
}
我没有得到任何输出(java.util.NoSuchElementException,如果我不使用 try 和 catch)
我能够读取 main 方法中的变量,但我的输入流对于新方法变为空
我通过使用方法和方法验证了这一点,如图所示nextLine()
main()
reverse()
public static void main (String[] args) {
int t,n;
String x,y,z;
t=scan.nextInt();
x=scan.nextLine();
n=scan.nextInt(); //to eat up the n input
y=scan.nextLine();
z=scan.nextLine();
System.out.println(x+y);
....
}
输出-
141 2 3 4
和
public void reverse(int n){
....
String k,j;
k = scan.nextLine(); //replacing n- to check what n=scanInt() reads
j= scan.nextLine();
System.out.println(x +y);
....
}
输出再次为空 (java.util.NoSuchElementException)
我认为这意味着该方法的输入流为空。
那么我如何将输入传递给reverse()
main()
reverse()
注意:1.如果我不使用,它给了我try{}
catch{}
java.util.NoSuchElementException
我知道我使代码变得有点复杂,这是由于我试图解决这个问题
我从这里得到了解决方案,但它并不能解决我的空输入问题
try{}
catch{}
4.这让我明白了空输入异常
答:
创建一个方法,而不是创建一个类的 Object,然后调用该方法。(除非你想要那样)。
创建一个并在任何地方使用它。static Scanner
private static Scanner scanner = new Scanner(System.in)
要打印使用 .array
System.out.println(Arrays.toString(a));
还原剂使用后。scanner.nextLine()
Scanner.nextInt
import java.util.Arrays;
import java.util.Scanner;
class Main {
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int i, t, n;
String x, y;
t = scanner.nextInt();
for (i = 0; i < t; i++) {
reverse();
}
}
private static void reverse() {
int i;
int[] a;
int n;
n = scanner.nextInt();
a = new int[n];
for (i = n - 1; i >= 0; i--) {
a[i] = scanner.nextInt();
}
System.out.println(Arrays.toString(a));
}
}
这是您想要的输出吗?
评论
new Scanner
评论
private static void reverse(){...}
System.out.println(Arrays.toString(a));