• 締切済み

配列の受け渡し

始めまして java初心者で恐縮なのですが, プログラムA.javaで作った配列をプログラムB.javaで利用する といったことがしたく,以下のようなプログラムを作成しました. ↓がプログラムA(HTest.java) import java.lang.*; import java.io.*; import java.util.*; public class HTest{ public static class Inner{ public static String[] inp = new String[200]; inp = Input(); } public static String[] Input() { String[] abc = {"a", "b", "c", "d", "e", "f", "g"}; return abc; } } ↓がプログラムB(YTest.java) import java.util.*; public class YTest{ public static void main(String[] args){ String query = "a"; int i,j; for(i=0; i<7; i++){ if(HTest.Inner.inp[i].indexOf(query) != -1) { System.out.println("Hit!"); } } } } YTest.javaをコンパイルすると, .\HTest.java:10: <identifier>がありません。 inp = Input(); ^ .\HTest.java:10: シンボルを見つけられません。 シンボル:クラス inp 場所 : HTest.Inner のクラス inp = Input(); ^ といったエラーが出ます. 構文がどこかおかしいのでしょうか? どこがおかしいのか分かりません どなたか是非ご教授お願いいたします.

みんなの回答

回答No.2

私「なら」以下のように作ります。 public class HTest{ private String[] inp; public HTest(){ inp = new String[]{"a", "b", "c", "d", "e", "f", "g"}; } public String[] getInp(){ return inp; } } public class YTest{ public static void main(String[] args){ String query = "a"; int i; String[] inp = new HTest().getInp(); for(i=0; i<inp.length; i++){ if(inp[i].indexOf(query) > -1){ System.out.println("Hit!"); } } } }

回答No.1

HTestがコンパイルエラーなのでYTestもコンパイルエラーになります。 おかしい部分にコメントいれておきましたのでチェックしてみてください。 import java.lang.*;←不要 import java.io.*;←不要 import java.util.*;←不要 public class HTest{ public static class Inner{ ←不要 public static String[] inp = new String[200];←不要 inp = Input(); ←メソッドでも何でもない部分にこのような記述は不可能です } public static String[] Input() { String[] abc = {"a", "b", "c", "d", "e", "f", "g"}; return abc; } } import java.util.*;←不要 public class YTest{ public static void main(String[] args){ String query = "a"; int i,j;←jは使用されていない for(i=0; i<7; i++){ if(HTest.Inner.inp[i].indexOf(query) != -1)←HTest.Input()を呼び出せばいいはず { System.out.println("Hit!"); } } } }

関連するQ&A

専門家に質問してみよう