• 締切済み

配列の受け渡し

始めまして 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(); ^ といったエラーが出ます. 構文がどこかおかしいのでしょうか? どこがおかしいのか分かりません どなたか是非ご教授お願いいたします.

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

みんなの回答

回答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

  • javac が実行できません。。

    以下はMain.classです。 package createMaster.util; import createMaster.util.Read; public class Main { public static void main(String[] args) { Read read = new Read(); read.execute(); } } 以下はRead.javaです。 package createMaster.util; public class Read { public void execute(){ System.out.println("okokokok"); } } javac Read.javaをして javac Main.javaを実行すると 下記のエラー出力されます。 Main.java:3: シンボルを見つけられません。 シンボル: クラス Read 場所 : createMaster.util の パッケージ import createMaster.util.Read; ^ Main.java:12: シンボルを見つけられません。 シンボル: クラス Read 場所 : createMaster.util.Main の クラス Read read = new Read(); ^ Main.java:12: シンボルを見つけられません。 シンボル: クラス Read 場所 : createMaster.util.Main の クラス Read read = new Read(); ^ エラー 3 個 いったいなぜでしょうか。。。。 御存じの方はお答えて頂戴。。

    • ベストアンサー
    • Java
  • jspでの二次元配列

    こんにちは。初めて質問させていただきます。よろしくお願いします。 現在javaで作ったプログラムをjspでも使えるようにしようと考えているのですが、 二次元配列がうまくjspで反映されず困っています。 jspに関してはほとんど無知で一から勉強している次第です。 そのためなるべく簡単に、と思い 以下のプログラムを、<% %>の間に入れるだけで動かせないかと思ったのですが エラーが出てしまいました。一次元の配列ならばできたのですが... ちなみに以下のプログラムはcsvファイルを読み込み、 多次元配列に格納していくというものです。 稚拙なプログラムで申し訳ありません... どなたかご教授いただければ幸いです。 import java.io.*; import java.util.StringTokenizer; import java.util.ArrayList; class Dog{  public static void main(String args[]) throws IOException{      String csv = "dognum.csv";      BufferedReader br = new BufferedReader(new FileReader(csv)); String[][] array = new String[100][]; int i = 0; while (true) { String line = br.readLine(); if(line==null) break; array[i] = line.split(","); i++; } for (i = 0; i < 101; i++) { for (int j = 0; j < array[i].length; j++) { System.out.println("["+i+"]["+j+"] = " + array[i][j]); } } } }

  • 動くプログラムと動かないプログラム

    senをつかってプログラムを実行したところ import java.io.IOException; import net.java.sen.StringTagger; import net.java.sen.Token; public class SenSample { public static void main(String[] args) throws IllegalArgumentException, IOException { System.setProperty("sen.home","c:/sen"); StringTagger tagger = StringTagger.getInstance(); String str = "私の名前を当ててください"; Token[] token = tagger.analyze(str); for(int i=0; i<token.length; i++){ System.out.println(token[i].getBasicString() +"("+token[i].getTermInfo()+")"); } } } は動きましたが、 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Locale; import net.java.sen.StringTagger; import net.java.sen.Token; public class StringTaggerDemo { public static void main(String args[]) { try { <中略> } } } は動きません 結果↓ C:\java>java StringTaggerDemo done. Please input Japanese sentence: java.lang.IllegalArgumentException: C:\java\null\conf\sen.xml (指定されたパスが 見つかりません。) at net.java.sen.StringTagger.readConfig(StringTagger.java:304) at net.java.sen.StringTagger.init(StringTagger.java:145) at <中略>net.java.sen.StringTagger.getInstance(StringTagger.java:113) at StringTaggerDemo.main(StringTaggerDemo.java:13) -- Press any key to exit (Input "c" to continue) -- となります。 違いは何ですか??

    • ベストアンサー
    • Java
  • JAVAで配列を使って * を縦向きのグラフで表示したいです。

    JAVAの勉強をしています。 このプログラムは配列に乱数を生成して * を 横向きにするプログラムです。 練習問題で、以下のプログラムを書き換えて、* を縦向きのグラフで表示する問題なのですが、解く方法がわかりません。 どなたか答えもしくはヒントを下さい。 よろしくお願いします。 import java.util.Random; import java.util.Scanner; public class Test06_04 { public static void main (String[] args) { Random rand = new Random(); Scanner stdIn = new Scanner(System.in); System.out.print("要素数 : "); int n = stdIn.nextInt(); //要素数を読み込む int[] a = new int[n]; //配列を生成 for (int i = 0; i < n; i++) { a[i] = 1+ rand.nextInt(10); } for (int i = 0; i < n; i++) { System.out.print("a[" + i + "] : "); for (int j = 0; j < a[i]; j++) System.out.print('*'); System.out.println(); } } }

    • ベストアンサー
    • Java
  • ランダム

    次のプログラムで同じ数字を出ないようにするにはどうすれば良いでしょうか。 import java.util.*; class RandomNum { public static void main(String args[]) { Random numRandom = new Random(); for (int i = 1; i <= 5; i++) { System.out.println(numRandom.nextInt(10)); } } }

    • ベストアンサー
    • Java
  • javaについて

    以下のようにキーボードから入力していくプログラムを試行しているのですが、エラーが出てくるので行き詰まっています。 理想的にはキーボードに”あいう”エンター”えおか”エンターと打ち込んだら str[0]=あいう str[1]=えおか と表示させていきたいのですが、よろしくお願いします。 import java.io.*; import java.lang.*; import java.net.*; import java.awt.*; class gugu2 { public static void main(String[] args) throws IOException { int i=0; while(i<2){ System.out.println("キーワード入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); char str[] = input.toCharArray(); System.out.println("キーワードは" + str[]); i=i+1; } for(i=0;i<2;i++){ System.out.println(str[]); } } } これがエラー表示です。 gugu2.java:17: '.class' がありません。 System.out.println("キーワードは" + str[]); ^ gugu2.java:21: '.class' がありません。 System.out.println(str[]); ^ エラー 2 個

    • ベストアンサー
    • Java
  • プログラムからメソッドを呼び出したいのですが

    今、ArtName.javaのプログラムにM_data.javaのプログラム内のメッソドを呼び出したいのですがコンパイルするとエラーになってしまいます。どのように記述すればメッソドを呼び出すことができるかご教授お願いたします。 以下がプログラムになります。 /*ArtName.java*/ import java.io.*; import java.nio.channels.*; import java.util.Arrays; class ArtName{ public static void an(String[] arg){ int i,j,number,song; char artname[]=new char[song]; M_data.music(); number=1; for(i=0;i<song;i++){ for(j=0;j<song;j++){ if(TagInfo[i]!=TagInfo[j]){ number++; } } } } } /*M_data.java*/ import java.io.*; import java.nio.channels.*; import java.util.Arrays; class TagInfo{ final private String name; final private int pos; final private int len; public TagInfo(String name,int pos,int len){ this.name=name; this.pos=pos; this.len=len; } public String getName() { return name; } public int getPos() { return pos; } public int getLen() { return len; } } public class M_data { private static byte[] copyOfRange(byte b[],int pos, int len){ byte[] a=new byte[len]; System.arraycopy(b,pos,a,0,len); return a; // return java.util.Arrays.copyOfRange(b,pos,pos+len); } static void music() { File file = new File("C:/Users/NEC-PCuser/Downloads/ Answer .mp3"); FileInputStream fis=new FileInputStream(file); String charsetName="Shift_JIS"; //if(1<args.length) charsetName=args[1]; FileChannel fc=fis.getChannel(); fc.position(fc.size()-128); byte[] b=new byte[128]; if(fis.read(b)==128 && b[0]=='T' && b[1]=='A' && b[2]=='G'){ TagInfo[] infos={new TagInfo("Song title:",3,30),new TagInfo ("Artist:",33,30)}; int i=0; /*以下のfor文です*/ for(TagInfo info: infos){ System.out.print(i + info.getName()); System.out.println(new String(copyOfRange(b,info.getPos (),info.getLen()),charsetName)); i++; } } } public static void main(String[] args) throws IOException{ music(); } } ArtName.javaをコンパイルすると Artname.java:17シンボルが見つかりません。 シンボル:ArtNameのクラス        if(TagInfo[i]!=TagInfo[j]{ とエラーになります。どのように記述すればコンパイルできるかお教えてください。 よろしくお願いいたします。

  • プログラムからメソッドを呼び出したいのですが

    今、ArtName.javaのプログラムにM_data.javaのプログラム内のメッソドを呼び出したいのですがコンパイルするとエラーになってしまいます。どのように記述すればメッソドを呼び出すことができるかご教授お願いたします。 以下がプログラムになります。 /*ArtName.java*/ import java.io.*; import java.nio.channels.*; import java.util.Arrays; class ArtName{ public static void an(String[] arg){ int i,j,number,song; char artname[]=new char[song]; M_data.music(); number=1; for(i=0;i<song;i++){ for(j=0;j<song;j++){ if(TagInfo[i]!=TagInfo[j]){ number++; } } } } } /*M_data.java*/ import java.io.*; import java.nio.channels.*; import java.util.Arrays; class TagInfo{ final private String name; final private int pos; final private int len; public TagInfo(String name,int pos,int len){ this.name=name; this.pos=pos; this.len=len; } public String getName() { return name; } public int getPos() { return pos; } public int getLen() { return len; } } public class M_data { private static byte[] copyOfRange(byte b[],int pos, int len){ byte[] a=new byte[len]; System.arraycopy(b,pos,a,0,len); return a; // return java.util.Arrays.copyOfRange(b,pos,pos+len); } static void music() { File file = new File("C:/Users/NEC-PCuser/Downloads/ Answer .mp3"); FileInputStream fis=new FileInputStream(file); String charsetName="Shift_JIS"; //if(1<args.length) charsetName=args[1]; FileChannel fc=fis.getChannel(); fc.position(fc.size()-128); byte[] b=new byte[128]; if(fis.read(b)==128 && b[0]=='T' && b[1]=='A' && b[2]=='G'){ TagInfo[] infos={new TagInfo("Song title:",3,30),new TagInfo ("Artist:",33,30)}; int i=0; /*以下のfor文です*/ for(TagInfo info: infos){ System.out.print(i + info.getName()); System.out.println(new String(copyOfRange(b,info.getPos (),info.getLen()),charsetName)); i++; } } } public static void main(String[] args) throws IOException{ music(); } } ArtName.javaをコンパイルすると Artname.java:17シンボルが見つかりません。 シンボル:ArtNameのクラス        if(TagInfo[i]!=TagInfo[j]{ とエラーになります。どのように記述すればコンパイルできるかお教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 配列を使用して

    試しに1から150までの中から数字を1つ10回取得しコマンドプロンプト上に表示するというプログラムを作成しました。しかし、コンパイルはできたのですが、変な文字が表示されてしまいます。このプログラムではだめでしょうか? import java.util.*; import java.lang.*; public class hairetu { public static void main(String[] args) { Random generator = new Random(); int hairetu[] = new int[10]; for(int i=0; i<10; i++){ int ran = (int)(Math.random() * 150); hairetu[0]=ran; hairetu[1]=ran; hairetu[2]=ran; hairetu[3]=ran; hairetu[4]=ran; hairetu[5]=ran; hairetu[6]=ran; hairetu[7]=ran; hairetu[8]=ran; hairetu[9]=ran; } System.out.println(hairetu); } }

    • ベストアンサー
    • Java
  • javaで配列の格納をしたいです。

    配列の格納がうまくいきません。 javaについて質問させて頂きます。 ユーザーが数字を入力し配列 atr[ i ]に格納され 配列 v[ i ] に v[ 0 ] = count ... v[ 143 ] = count ... v[ 144 ] = count - 1 ... v[ 287 ] = count - 1 ... ... v[ count-288 ] = 2 ... v[ count-145 ] = 2 ... v[ count-144 ] = 1 ... v[ count-1 ] = 1 と、格納されるようなプログラムを作っています。 for文で作ろうと考えたのですが count, count-1 , ... 3, 2, 1と値を入れようと思いましたがうまくコンパイルが通りませんでした。 エラーは以下になります。 a.java:48: シンボルを見つけられません。 シンボル: メソッド readLine(int) 場所 : java.io.BufferedReader の クラス value = br_v.readLine(atr[i]); もし宜しければアドバイスやご指摘を頂けませんでしょうか。 説明も拙い部分がありますが宜しければお願いします。 import java.io.*; import java.util.Arrays; class a { public static void main(String[] args) throws IOException { int atr[]; atr = new int[25]; int count = 0; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ //絶対に通る String str = br.readLine(); int res = Integer.parseInt(str); if(res == 0){ break; } else{ atr[count] = res; } count++; } for(int i=0; i<count; i++){ System.out.println(atr[i] + "が、選択されました。"); } int v[] = new int[25*144]; String value; try{ BufferedReader br_v = new BufferedReader(new InputStreamReader(System.in)); for(int i=count; i<count; i--){ value = br_v.readLine(atr[i]); v[i] = Integer.parseInt(value); } } catch(IOException e){ System.out.println("エラーです。"); } } }

専門家に質問してみよう