Javaの文字列配列についての質問

このQ&Aのポイント
  • Javaの文字列配列について質問です
  • 文字列配列の特定の要素を表示させたいがNullPointerExceptionが出てしまいます
  • 何が原因でNullPointerExceptionが発生しているのか教えてください
回答を見る
  • ベストアンサー

Javaの文字列配列について質問です

あは1行目の1つめです。 かは2行目の1つめです。 さは3行目の1つめです。 と表示させたいのですが、 Exception in thread "main" java.lang.NullPointerException at Nihongo.main(Nihongo.java:22) と出てきて出来ません。 どこが悪いのでしょうか? 22行目は「s[i].easyNihongo();」です。 class Hiragana { String boin; int num; int kaz; Hiragana(String b, int n, int k){ boin = b; num = n; kaz = k; } void easyNihongo(){ System.out.println(boin+"は"+num+"行目の"+kaz+"つ目です。"); } } class Nihongo{ public static void main(String [] args){ String aiueo[] = {"あ", "か", "さ"}; Hiragana [] s = new Hiragana[3]; for(int i=0; i<s.length; i++){ s[i] = new Hiragana(aiueo[i], 1, i++); s[i].easyNihongo(); } } }

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

for文のところで、こうしたら原因がわかるかと思います。 for(int i=0; i<s.length; i++){ System.out.println("newの前 i=" + i); s[i] = new Hiragana(aiueo[i], 1, i++); System.out.println("newの後 i=" + i ); s[i].easyNihongo(); } }

ikandesho
質問者

お礼

ありがとうございました!

関連するQ&A

  • javaの配列とクラス

    abstract class abstract_class{ } class subclassA extends abstract_class{ int num = 1; } class subclassB extends abstract_class{ int num = 2; } class subclassC extends abstract_class{ int num = 3; } class Main{ public static void main(String args[]){ int sum = 0; abstract_class var[] = new abstract_class[3]; var[0] = new subclassA(); var[1] = new subclassB(); var[2] = new subclassC(); for(int i=0;i<3;i++) sum += var[i].num; System.out.println(sum); } } これをコンパイルすると Main.java:23: シンボルを見つけられません。 シンボル: 変数 num 場所 : abstract_class の クラス for(int i=0;i<3;i++) sum += var[i].num; ^ エラー 1 個 というエラーが出るのはなぜでしょうか? var[i]はみなsubclassA,subclassB,subclassCが代入されているのに、numはabstract_classの変数となっています。 よくわかりません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaの文字列配列について質問です

    父は1月5日生まれです。 母は4月12日生まれです。 私は8月7日生まれです。 というような表示をさせたいのですが、出来ません。 したがソースなのですが何方か教えて頂けないでしょうか class Birth{ String name; int human; int day; Tower (String h, int m, int d){ human = h; mon = m; day = d; } void showBirth (){ System.out.println(human+"は"+mon+"月"+day+"生まれです。"); } } public class Hiniti{ public static void main(String[] args) { String [] name = {"父", "母", "私"}; int [] tuki = {1, 4, 8}; int [] niti = {5, 12, 7}; for (int i; i<name.length; i++){ Birth [] b = new Birth[name.length]; for(int i = 0; i < b; int i++){ b[i] = new Birth(name[i], tuki[i], niti[i]); b[i].showBirth(); } } } }

    • ベストアンサー
    • Java
  • Javaの文字列配列について質問です

    父は1月5日生まれです。 母は4月12日生まれです。 私は8月7日生まれです。 というような表示をさせたいのですが、出来ません。 したがソースなのですが何方か教えて頂けないでしょうか class Birth{ String name; int human; int day; Tower (String h, int m, int d){ human = h; mon = m; day = d; } void showBirth (){ System.out.println(human+"は"+mon+"月"+day+"生まれです。"); } } public class Hiniti{ public static void main(String[] args) { String [] name = {"父", "母", "私"}; int [] tuki = {1, 4, 8}; int [] niti = {5, 12, 7}; for (int i; i<name.length; i++){ Birth [] b = new Birth[name.length]; for(int i = 0; i < b; int i++){ b[i] = new Birth(name[i], tuki[i], niti[i]); b[i].showBirth(); } } } }

  • Javaで配列を定義する方法

    こんにちは、片岡といいます。 Java言語で配列を定義する場合、以下の二つの書式に違いはありますか。 違いがあるとすれば、どのような違いですか。 また、違いがないのならば、どちらの記述がよいのですか。 ご存知の方はいらっしゃいませんか。 (1) public class Main1 { public static void main(String[] args) { String str[] = new String[] { new String("itiban"), new String("niban"), new String("sanban"), }; for (int i = 0; i < str.length; i++ ) { System.out.println(str[i]); } } } (2) public class Main2 { public static void main(String[] args) { String str[] = { new String("itiban"), new String("niban"), new String("sanban"), }; for (int i = 0; i < str.length; i++ ) { System.out.println(str[i]); } } } なお、私の環境は以下の通りです。 OS: Microsoft Windows XP Professional SP2 java: java version "1.4.2_13" 検索エンジンで"配列 オブジェクト java"を検索しましたが、 解決に役立つ情報は見つかりませんでした。

    • ベストアンサー
    • Java
  • javaのlengthに対して質問です

    javaのlengthに対して質問です public class Gauss { public static void main(String[] args){ int[] ia = new int[101]; for (int i = 0 ; i<ia.length;i++); } } 今の場合 ia.lengthはどれくらいの長さですか? ia だから2?

    • ベストアンサー
    • Java
  • java while文です。教えてください(__)

    public class mondai2{ //プログラム開始 public static void main(String args[]){ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int i; int ans=0; int seikai=0; for(i=0;i<5;i++){ try{ { Random ran = new Random(); int num1 = ran.nextInt(8)+1; int num2 = ran.nextInt(8)+1; ans = num1*num2; System.out.print("問題"+(i+1)+":"); System.out.print(num1 + "×" +num2 + "="); String s =in.readLine(); seikai = Integer.parseInt(s); if(seikai==ans){ System.out.println("正解"); }else{ System.out.println("不正解"); } } }catch(IOException e){ System.out.println("エラー"); } } } } このプログラムをwhile文か、do while文にして正解が出るまで問題が出続けるようにしたいんですけど、まったくわからなくて困っています>< 教えてください(+o+)

    • ベストアンサー
    • Java
  • 配列で最大・最小値を求める

    import java.io.*; class Prog10_2 { public static void main(String args[])throws IOException { System.out.println("10個の整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num[] = new int[10]; for(int i=0; i<num.length; i++){ String str = br.readLine(); int tmp = Integer.parseInt(str); num[i] = tmp; } int max = 0; int min = 0; for(int i=0; i<num.length; i++){ if(max < num[i]){ max = num[i]; } if(min > num[i]){ min = num[i]; } } System.out.println("最大値は"+max+"で、最小値は"+min+"です。"); } }   というコマンドを実行すると、最大値はちゃんと表示されるのですが、 最小値はいつも"0"しか表示されません。どこを修正すればいいのでしょうか? どなたか分かる方いらっしゃいましたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • javaの質問です。合っているかお願いします

    間違ってる場合は何が違って何が正解かをお願いします。 よろしくお願いします 1 this.numとnumの違い this.numはインスタンス変数でnumは変数 2 メソッド内のthis.numは何行目で宣言されているか? 4行目 public class Example4 { int num; void plus( int num ) { this.num = this.num + num; } void multiple( int num ) { this.num = this.num * num; } void setNum( int num ) { this.num = num; } int getNum() { return this.num; } }

    • ベストアンサー
    • Java
  • vectorを使った列の計算について

    への補足 列合計を計算したいのですが、 まったくといってどうすればいいのか思いつきません>< どのようにループすれば列合計を計算、出力できるのでしょうか? import java.util.*; import java.io.*; public class Gyosyukei { public static void main(String args[]) { try{ BufferedReader br = new BufferedReader(new FileReader(args[0])); String str; while((str = br.readLine()) != null){ // 1行を格納するVector Vector vcLine = new Vector(); StringTokenizer st = new StringTokenizer(str,","); for(int i =0;st.hasMoreTokens(); i++){ String token = st.nextToken(); // 行の要素に追加 vcLine.addElement(token); } /* 行合計 */ int gyosum = 0; int num = 0; for(int j =1; j < vcLine.size(); j++){ num = Integer.parseInt((String)vcLine.get(j)); gyosum += num; } System.out.println(gyosum); } } catch(IOException e){ } catch(ArrayIndexOutOfBoundsException ae){ } } }

    • ベストアンサー
    • Java
  • ポインタ配列の問題で、、。

    ポインタ配列の問題ですが、このmain関数でどこかがおかしいのですが、どこをどう変更すれば正常に動作するのかわかりません。どなたかお願いします(注)string入力文字は9文字以下です。 #include <stdio.h> #define NUM 5 main(void) {     char *str[NUM];     int i;     for(i = 0; i < NUM; i++)     {      printf("string ->"); scanf("%s", str[i]);      }      for(i = 0; i < NUM; i++)      {        printf("str[%d] -> %s\n", i, str[i]);      } }

専門家に質問してみよう