前提・実現したいこと
言語はJavaです。
versionは1.8.0です。
実行環境はテキストエディタ、IDEは使用していません。
実現したいことは
mainメソッドからArrayListを関数に引数して、別メソッドで処理した複数の値をreturnでmainメソッドに返したいです。int、Stringで複数の値を返す方法は可能でしたが、ArrayListで同じように書いたところ、エラーが発生しました。
ArrayListという型自体の問題なのか、コードの記述がおかしいのか、エラーからは判断ができず、どのように解決すればいいのかがわかりません。
現在試している方法でなくても、ArrayListの値を複数返す方法があればご教授いただけると幸いです。
発生している問題・エラーメッセージ
Arai.java:32: エラー: addに適切なメソッドが見つかりません(ArrayList<String>) nano.uso.add(kemono); ^ メソッド Collection.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) メソッド List.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) メソッド AbstractCollection.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) メソッド AbstractList.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) メソッド ArrayList.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) Arai.java:34: エラー: addに適切なメソッドが見つかりません(ArrayList<String>) nano.honto.add(friends); ^ メソッド Collection.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) メソッド List.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) メソッド AbstractCollection.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) メソッド AbstractList.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) メソッド ArrayList.add(String)は使用できません (引数の不一致: ArrayList<String>をStringに変換できません:) 注意:一部のメッセージは簡略化されています。-Xdiags:verboseで再コンパイルして完全な出力を取得してください エラー2個
該当のソースコード
Arai.java
1import java.util.ArrayList; 2 3public class Arai{ 4 public static void main(String[] args){ 5 // Nanoda classのインスタンスの作成 6 Nanoda nano = new Nanoda(); 7 8 // 引数したい値のインスタンスの作成 9 ArrayList<String> kemono = new ArrayList<String>(); 10 ArrayList<String> friends = new ArrayList<String>(); 11 12 // 値に要素を追加 13 kemono.add("けもの"); 14 friends.add("フレンズ"); 15 16 // 変数kemohureにNanoda classのtomodachiメソッドの処理を引数して代入 17 Nanoda kemohure = nano.tomodachi(kemono, friends); 18 19 kemohure.uso.get(0); 20 kemohure.uso.get(1); 21 22 kemohure.honto.get(0); 23 kemohure.honto.get(1); 24 25 System.out.println(kemohure.uso); 26 System.out.println(kemohure.honto); 27 28 } 29} 30 31 32class Nanoda{ 33 // 返したい値のインスタンスの作成 34 ArrayList<String> uso = new ArrayList<String>(); 35 ArrayList<String> honto = new ArrayList<String>(); 36 37 public Nanoda tomodachi(ArrayList<String> kemono, ArrayList<String> friends){ 38 39 // classのインスタンスの作成 40 Nanoda nano = new Nanoda(); 41 42 // Nanoda classのそれぞれの変数フィールドに、引数した要素 + 新しい要素を 43 // 追加 44 nano.uso.add(kemono); 45 nano.uso.add("kemono"); 46 nano.honto.add(friends); 47 nano.honto.add("friends"); 48 49 50 // Nanoda classを返す 51 return nano; 52 53 } 54} 55 56// つかっている変数一覧(処理順) 57// nano : Nanoda classのインスタンス変数 58// kemono : "けもの" が入っているString型ArrayList 59// friends : "フレンズ" が入っているString型ArrayList 60// uso : ArrayList変数[kemono]の値を返すために要素を代入する変数 61// honto : ArrayList変数[friends]の値を返すために要素を代入する変数 62// kemohure : Nanoda classのtomodachi関数を呼び出すための変数
試したこと
・ArrayListをasListでList型配列に変換して返してみる。
→ 失敗。下記のエラーが発生しました。
※今後別処理でaddやremoveもできるようにしたいので、毎回toArrayとasListで変換してから処理をすることになるので、できれば変換なく対応できる方法だとありがたいです。
Arai.java:38: エラー: ';'がありません List<String> nano.uso = Arrays.asList(nano.uso); ^ Arai.java:39: エラー: ';'がありません List<String> nano.honto = Arrays.asList(nano.honto);
・tomodachi関数に引数したい型を記入
public Nanoda tomodachi(ArrayList<String> kemono, ArrayList<String> friends) ↓ public Nanoda ArrayList<String> tomodachi(ArrayList<String> kemono, ArrayList<String> friends)
→ 引数の型の不一致は消えましたが、下記のエラーが発生しました。
Arai.java:36: エラー: ';'がありません public Nanoda ArrayList<String> tomodachi(ArrayList<String> kemono, ArrayList<String> friends){ ^ Arai.java:36: エラー: 無効なメソッド宣言です。戻り値の型が必要です。 public Nanoda ArrayList<String> tomodachi(ArrayList<String> kemono, ArrayList<String> friends){ ^ エラー2個
解決したいこと
改めて解決したいことのまとめです。
・mainメソッドから引数した複数のArrayListの値を処理し、結果を返したい
・エラー内容は引数の不一致
・「一部のメッセージは簡略化されています」というエラーも対処方法わからず
・可能であればaddやremoveを処理の中で行いたいため、Listに変換するという方法以外で解決したい
以上の内容で、助力をお願いしたいです。
また、答えそのものではなく、HPや他の質問で、これをみれば理解できます。といったものでも教えていただけると嬉しいです。
わかりにくい部分も多々あると思いますが、どなたかご教授いただけると幸いでございます。よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー