Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

一つ目のクラスの機能を二つ目のクラスに適用して出力させる

(B)コマンドラインで与えた文字列の1文字目,4文字目,7文字目,...(3で割って余り1文字目)だけをつなげて出力するプログラム
(C)5桁の数字 "01234"〜"98765" を順番に(C)のクラスに渡して実行させるプログラム

を作成しており、
public class EnsyuB {
        public static void main(String[] args) {
            for (int i = 0; i< args[0].length(); i=i+3)
                System.out.print(args[0].charAt(i));
        }
    }    
        
上記のようにBは作成でき動作も大丈夫でした。
public class EnsyuC {
    public int Calculate() {
        for (int x = 1234; x < 98766; x++) {
            System.out.printf("%05d\n", x);
            }
        return 0;
    }
    public static void main(String[] args) {
        EnsyuB ensyuB = new EnsyuB();
        ensyuB.main(args);
        EnsyuC ensyuC = new EnsyuC();
        ensyuC.Calculate();
        for (int i=0; i< args[0].length(); i=i+3){
            System.out.print(args[0].charAt(i));
    }
}}
上記のようにCをつくりましたが
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at ensyumondai.EnsyuB.main(EnsyuB.java:4)
    at ensyumondai.EnsyuC.main(EnsyuC.java:11)
とエラーがでました。
コマンドラインに適当に入力してみると98765まで数字の後に1文字、3文字、5文字、、、が出力されました。何もコマンドラインに入力しなくても処理ができるようにしたいと思うのですが、解決策やヒントをご教授いただけないでしょうか?

8

回答

78507

閲覧

8件の回答

評価

0

とりあえず、「例外のメッセージを検索しましょう」が最初です。

評価

0

luckyさん

わざわざ myu という名前から、lucky という名前に変更しなくても良いのでは?

勘違いでしたらすみません。


ヒントにつきましては、mio さんと同様です。
発生したエラーがどういうエラーで、どういう事が起こった時に発生するか等を知る(調べる)べきだと思います。

評価

0

まずは、「どこ(どのクラス、どの行)でエラーが出ているのか」「そのエラーはどういう意味なのか」を理解してから質問したほうがよろしいですよ。

「ArrayIndexOutOfBoundsException」がどういうエラーなのかが理解できたら、そんなに難しいことではありませんし。

【Javaの道 掲示板 ガイドライン】
http://www.javaroad.jp/bbs/bbs_rule.htm

利用時のマナー
・ 質問の前に、過去ログ、検索エンジンで解決策がないか調べましょう 

評価

0

ご回答有難うございます。マナー不足で申し訳ないです。以降気をつけます。

一応検索はしていまして、コマンドラインに何も書かない時にでるエラーだということはわかります。ですのでBとCが上手くつながっていないということはわかります。インスタンスを上手くできれば解決するのではないかなと思っていますがなかなかできなくて質問させていただきました。

評価

0

BとCをどこでつないでいるつもりですか?

あと、staticメソッドをインスタンスを使って呼び出すのはやめたほうがいいです。それよりも、mainメソッドを外部から呼ぶのは始めて見ました。これもやめたほうがいいのでは?

評価

0

>一応検索はしていまして
それを書かないと、誰にも分かりません。

>コマンドラインに何も書かない時にでるエラー
違います。本当に調べたのでしょうか。

評価

0

>コマンドラインに何も書かない時にでるエラー

「luckyさんのプログラムを「コマンドプロンプト」で実行するときに、引数を書かなかった場合にプログラム内で発生したエラー」という意味では間違っていないと言えば間違っていないですが・・・・ここで聞いている「ArrayIndexOutOfBoundsException」がどういうエラーなのかは、もっと別の意味です。

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/ArrayIndexOutOfBoundsException.html

ここを見たのでしょうか?書いてある文章が理解できなくても、別のサイトを調べればわかりやすい言葉で書いているところや、サンプルを書いているところはあります。

あと、hogeぽんさんも書いてますが、EnsyuBクラスのmainメソッドは止めましょう。単純にEnsyuCで呼びたいだけなら、別のメソッド名をつけるべきです。(というかmainメソッドを使うべきではない・・・)

評価

0

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html

で見ました。とおりすがりさんの記載していただいたところと一緒です。意味がよくわからなく、自分で解釈してしまっていました。

皆さんのおかげでこれから何をすればよいのかがなんとなくわかってきました。ありがとうございます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。