※ ChatGPTを利用し、要約された質問です(原文:プログラムからメソッドを呼び出したいのですが)
プログラムからメソッドを呼び出す方法について
このQ&Aのポイント
ArtName.javaのプログラム内のメソッドを呼び出したいが、コンパイルエラーが発生する。
エラーの原因は、TagInfoクラスのシンボルが見つからないこと。
解決策として、TagInfoクラスをM_data.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のプログラムを修正してみます。 参考例をあげての明確なアドバイスありがとうございました。 プログラム初心者ですのでまた質問するかも知れません。 その時はご教授お願いいたします。 ありがとうございました。