我创建了一个带有用户输入的方法的实用程序类,并返回它的小写版本,因此我没有那么多重复的代码,但它只能使用一次。之后,它不会扫描。我该怎么做才能解决这个问题?
P.S。我见过很多人说重复使用扫描仪是个坏主意。为什么是这样?如果重置扫描仪,那该不行吗?
public String scan() {
String input;
Scanner s = new Scanner(System.in);
if (s.hasNextLine()) {
input = s.nextLine();
} else {
input = "ERROR";
}
s.reset();
s.close();
return input.toLowerCase();
}
答案 0 :(得分:0)
每次使用扫描仪进行重置时都是正确的。您的问题的解决方案如下:
将要传递的所有参数添加到数组中的onCreate
,并使用Main Activity
循环将所有参数传递给getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).replace(R.id.fl_testing, new viewPagerFragment()).commit();
,同时返回时,再次将它们添加到各自的阵列位置,这样您就可以轻松地在任何地方重复使用它们。
答案 1 :(得分:0)
每次需要阅读一行时,您实际上可以重复使用扫描仪而不是创建一个新扫描仪,这是一个示例:
public class Test {
public static void main(String[] args) {
Test t = new Test();
//create your scanner object
Scanner s = new Scanner(System.in);
//send it as a parameter whenever you need to read a line
System.out.println(t.scan(s));
System.out.println(t.scan(s));
System.out.println(t.scan(s));
//close it after finishing
s.close();
}
public String scan(Scanner s) {
String input;
if (s.hasNextLine()) {
input = s.nextLine();
} else {
input = "ERROR";
}
return input.toLowerCase();
}
}
但是如果你为你创建一个reader实用程序类,那么在实用程序类中成为Instance变量更合乎逻辑。
例如:
public class Reader {
Scanner s ;
public Reader() {
s = new Scanner(System.in);
}
public String scan() {
String input;
if (s.hasNextLine()) {
input = s.nextLine();
} else {
input = "ERROR";
}
return input.toLowerCase();
}
public void close(){
s.close();
}
}
当你使用它时,它会是这样的:
public class Main {
public static void main(String[] args) {
//create your scanner object
Reader r = new Reader();
//send it whenever you need to read a line
System.out.println(r.scan());
System.out.println(r.scan());
System.out.println(r.scan());
//close it after finishing
r.close();
}
}