そこで、JFrames を使用して基本的な RPG ユーザー ID 選択メニューを作成しようとしています。ラジオ ボタンを使用して ID オプションを表示することにしました。ユーザーが ID を選択したら、JOptionPane を使用してそれを元に戻します。これはすべて MyClass クラス内で行われます。ユーザーが ID を選択すると、.txt ファイルから読み取り、ユーザーが行った選択をチェックします。これは、各ユーザー ID が .txt ファイルに統計情報も含まれているキャラクターに関連付けられているためです。.txt ファイルの複数の行を分割し、さまざまな特性をすべて個別の文字列として保存することができました。私の問題は、JFrames を使用して前述の特性を表示する MyClass の外に別のクラスを作成したいので、.txt ファイルの分割が Try-Catch 内で行われたため、変数を渡すのに問題があることです。読んだ、これらの変数は、Try-Catch のスコープ内にのみ含まれています。これは、私が言及した最初のクラスのメソッドがどのように見えるかです:
public void checkID()
{
StringBuilder allInfo=null; //Used to store all the Info
String line=null; //Used as condition for loop & to generate the String Builder
String strAll2=null;
String[] sa=null;
String[] sb=null;
String[] sd=null;
String[] se=null;
BufferedReader br=null;
//User Id as a string
try {
br = new BufferedReader(new FileReader("charList.txt"));
allInfo= new StringBuilder();
while ((line=br.readLine()) != null)
{
allInfo.append(line + "\n");
}
strAll2=allInfo.toString(); //all the info of charList.txt as one StringBuilder
sa=strAll2.split("\n"); //all the info of charList.txt as a String
sb=sa[0].split("\t"); //all the info of the first line of the file as individual strings
sd=sa[1].split("\t"); //all the info of the second line of the file as individual strings
se=sa[2].split("\t"); //all the info of the third line of the file as individual strings
if (firstIdButton.isSelected())
{
strId=sb[0];
}
else
{
if (secondIdButton.isSelected())
{
strId=sd[0];
}
else
{
if (thirdIdButton.isSelected())
{
strId=se[0];
}
}
}
ID = Integer.parseInt(strId);
}//end of try
catch (IOException e) {
e.printStackTrace();
}//end of catch
setVisible(false); //Hides Window
}//end of check id method
ID と strId の両方をメイン クラスでそれぞれ public int と String として宣言しました。ここで、MyClass の外にある別のクラスで ID を呼び出すという行に沿って何かを実行しようとしています。表示するキャラクターを確認します。問題は、コンストラクターをインスタンス化して変数にアクセスしようとすると、try-catch のスコープではブロック内で取得した値を渡すことができないため、0 が返されることです。また、メソッドが ID の値を返すようにしようとしましたが、MyClass の外で同じ問題に遭遇しました
これは私がそれを実装するのに問題があるところです
public class CharacterEditor {
public static void main(String[] args) throws IOException{
MyClass iw= new MyClass();
int theID=iw.ID;
System.out.println(theID);
} }