次のようなコードがあります。
package testprogramm;
class Sample {
public static void main(String[] args) {
String moji;
int mojisu;
moji = args[0];
mojisu = Integer.parseInt(args[1]);
for (int i = 1; i <= mojisu; i++) {
for (int j = 1; j <= mojisu; j++) {
System.out.print(moji);
System.out.print(" ");
}
System.out.println(); // 改行
}
System.out.println();
for (int i = 1; i <= mojisu; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(moji);
System.out.print(" ");
}
System.out.println(); // 改行
}
}
}
これをEclipse上で実行するとエラーが出てきてしまいます。
なぜエラーになりどう直せばいいのか、お教えいただけないでしょうか。よろしくお願い致します。
「Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at testprogramm.Sample.main(Sample.java:6)」というエラーが出てきてしまいます…。
プログラムを見る限り
args[0]とargs[1]という2つの引数が実行に必要なようです。
Eclipseでやるなら引数設定が必要と思われます。
http://fernweh.jp/b/main-argument/
ありがとうございます、試してみたのですが、何を入れたらいいのかよく判らなく、エラーになります。
http://f.hatena.ne.jp/moon-fondu/20190615070041
そもそもargs[0]とargs[1]は引数なのでしょうか?argument、の単語的な意味が引数であることは判りますが。
"public static void main(String[] args)"とあるので、argsはString型の配列変数ではあると思います。
ただargs[0]とargs[1]は、
String moji;
int mojisu;
moji = args[0];
mojisu = Integer.parseInt(args[1]);
とありますように、args[0]は変数"moji"に代入したString型の配列、args[1]は変数"mojisu"に代入したIntegerクラスのparseIntメソッドでint型にされたint型の配列、かと思います。
確かに"moji"は「System.out.print(moji);」とありますように、括弧で囲んで引数として利用していると思いますが。"mojisu"の方は、for文「for (int i = 1; i <= mojisu; i++) {…」の真ん中、for文の継続条件として利用されていると思いますが、引数としては利用されていないように思えます。
やはり自分はコードの中身がよく把握できていない部分もありまして、リンク先を参考にしてそれを同様に展開させることも難しく…度々すみませんが再度、args[0]とargs[1]が引数である理由や引数設定が必要な理由、どのように引数設定をすればよいか等、お教えいただけないでしょうか。
よろしくお願いします。
ありがとうございます。
2019/06/14 21:00:18さっそく、リンク先を参考に、実行→実行構成→引数タブを開いてみました。
すると、引数タブは空白で、何もデータが入っておらず…どのように書き換えますと、うまくeclipse上で動いてくれるでしょうか?
度々すみません、よろしくお願いします<m(__)m>