使用扫描程序JAVA初始化数组

时间:2017-05-22 21:07:06

标签: java arrays java.util.scanner args

public class Main {
   public static void main(String[] args) {
      args = new String[]{"0 0 1 1"};
   }
}

我想使用args从控制台初始化Scanner。有可能吗?

2 个答案:

答案 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();
}