public class Main {
public static void main(String[] args) {
args = new String[]{"0 0 1 1"};
}
}
我想使用args
从控制台初始化Scanner
。有可能吗?
答案 0 :(得分:2)
args
包含调用时传递给Java程序的命令行参数。
例如,如果我像这样创建PrintArgs
类:
public class PrintArgs {
public static void main (String[] args) {
for (String s: args) {// loop through args array
System.out.println(s); // print out every String
}
}
}
我现在可以运行PrintArgs
并将Strings
传递给args
,例如在我写的命令行上:
$java PrintArgs First Second Third
因此,它将在控制台上打印出来:
First
Second
Third
因此,您不需要Scanner
来阅读String[]args
数组。
此外,如果要将文件路径作为String参数传递给args
,请使用Scanner
从中读取,例如:
public class ReadFileUsingScanner{
public static void main (String[] args) {
try {
File f = new File(args[0]); // suppose you passed the file path as first String
Scanner input = new Scanner(f);
while (input.hasNextLine()) { // loop through every line
System.out.println(input.nextLine()); // print it out
}
input.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
然后你运行ReadFileUsingScanner
,例如:
$java ReadFileUsingScanner someFilePath.txt
答案 1 :(得分:1)
args
命令运行程序时, java
会被java初始化,例如:java Main.class a b c
所以,这不是我们在程序中初始化的东西。虽然您可以重新初始化args
内部main
方法,但您不应该这样做(a)丢失其先前的值,(b)违反参数的不变性。
你可以创建一个新的array
并询问用户输入,例如:
String[] array = new String[5];
Scanner scanner = new Scanner(System.in);
System.out.println("Enter "+ array.length + " inputs :" );
for(int i = 0; i < array.length ; i++){
array[i] = scanner.nextLine();
}