用JAVA扫描程序初始化数组

用JAVA扫描程序初始化数组,java,arrays,java.util.scanner,args,Java,Arrays,Java.util.scanner,Args,我想使用Scanner从控制台初始化args。有可能吗?args在您使用java命令运行程序时由java初始化,例如:java Main.class a b c 所以,这不是我们在程序中初始化的东西。尽管可以在main方法中重新初始化args,但不应该这样做,因为它(a)会丢失以前的值,(b)会影响参数的不变性 您可能会创建一个新的数组,并要求用户输入,例如: public class Main { public static void main(String[] args) {

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

args
在您使用
java
命令运行程序时由java初始化,例如:
java Main.class a b c

所以,这不是我们在程序中初始化的东西。尽管可以在
main
方法中重新初始化
args
,但不应该这样做,因为它(a)会丢失以前的值,(b)会影响参数的不变性

您可能会创建一个新的
数组
,并要求用户输入,例如:

public class Main {
   public static void main(String[] args) {
      args = new String[]{"0 0 1 1"};
   }
}
String[]数组=新字符串[5];
扫描仪=新的扫描仪(System.in);
System.out.println(“输入”+array.length+“输入:”);
for(int i=0;i
args
包含调用时传递给Java程序的命令行参数

例如,如果我像这样创建
PrintArgs
类:

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();
}
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();
        }
    }
} 
现在,我可以运行
PrintArgs
并将
Strings
传递给
args
,例如,在我编写的命令行上:

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
        }
    }
}
因此,它将在控制台上打印:

$java PrintArgs First Second Third
因此,您不需要
扫描仪
来读取
字符串[]args
数组

此外,如果要将文件路径作为字符串参数传递给
args
,然后使用
扫描仪从中读取,可以执行以下操作,例如:

First
Second
Third
然后使用scanner运行
readfiles
,例如:

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

等等,什么?不,您不初始化
args
;已经为你准备好了。您所要做的就是在命令行上传入值。如果不想使用命令行,则只能使用
Scanner
。你想解决什么问题?数组中的一个字符串值?是的,它是“可能的”。但是为什么不创建一个新数组,而不使用
args
?这只比垃圾
args
要难一点。