public class Main {
public static void main(String[] args) {
args = new String[]{"0 0 1 1"};
}
}
コンソールからargs
をScanner
で初期化します。出来ますか?あなたはjava
コマンドを使用してプログラムを実行するときスキャナで初期化する配列
public class Main {
public static void main(String[] args) {
args = new String[]{"0 0 1 1"};
}
}
コンソールからargs
をScanner
で初期化します。出来ますか?あなたはjava
コマンドを使用してプログラムを実行するときスキャナで初期化する配列
args
は例えば、Javaのことで初期化されます:java Main.class a b c
をだから、それは我々がプログラム内で初期化するものではないのです。 main
メソッド内のargs
を再初期化することはできますが、(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();
}
args
は、呼び出し時にJavaプログラムに渡されるコマンドライン引数が含まれています。
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
を実行し、私が書くコマンドラインで、たとえば、args
にStrings
を渡すことができます:だから
$java PrintArgs First Second Third
私はPrintArgs
クラス次のように作成した場合、たとえば
コンソールに表示されます:
First
Second
Third
したがって、配列String[]args
から読み取るためにScanner
は必要ありません。さらに
、あなたは、それからの読み取りにScanner
を使用し、その後、args
に文字列引数としてファイルパスを渡すためにあなたは、たとえば行うことができますしたい場合:
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
待って、何?いいえ、あなたは 'args'を初期化しません。あなたのために既に提供されています。コマンドラインで値を渡すだけです。コマンドラインを使用したくない場合は、 'Scanner'を排他的に*使用します。どのような問題を解決しようとしていますか? – Makoto
配列内に1つの文字列値がありますか? – Aryan
はい、可能です。しかし、単に新しい配列を作成し、 'args'だけを残すのはなぜですか? 'args'を捨てるよりもやや難しいです。 –