質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

6642閲覧

listの参照があいまいです

msia

総合スコア33

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/10/16 05:54

この前質問させていただいたときに回答して下さった方のソースをコンパイルしてみたんですが(いらないimportまで書いてると思いますが気にしないでください)listの参照があいまいですというエラーが出ます
調べてもわからず
インデックスが抜けてるのでしょうか?
どうかわかる方修正していただけませんか?
このエラーがわからないとなると恥ずかしい気がして。。。すいません
しりとりゲームを作りたいのです

import java.awt.;
import java.awt.event.
;
import javax.swing.;
import java.io.Console;
import java.io.
;
import java.util.*;
import java.util.ArrayList;
import java.util.Iterator;

public class Shiritori {

private static final BufferedReader READER = new BufferedReader( new InputStreamReader(System.in)); java.sql.Date date; private static final List<String> DICTIONARY = Collections .unmodifiableList(Arrays.asList("りんご", "ごりら", "らっぱ","ぱんつ","つくし", "しりとり","しめじ")); private static final List<String> USED = new ArrayList<>(); private static final Random RANDOM; static { try { RANDOM = SecureRandom.getInstanceStrong(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } public static void main(String[] args) throws IOException { String yours = DICTIONARY.get(RANDOM.nextInt(DICTIONARY.size())); System.out.println(new StringBuilder().append("じゃあねー最初は[").append(yours) .append(']').append("だよ")); for (;;) { final String mine = READER.readLine(); if (mine.isEmpty()) { continue; } if(mine.equals("!")){ System.out.println("へへん.勝ったー!"); return; } if (yours.charAt(yours.length() - 1) != mine.charAt(0)) { System.out.println(new StringBuilder().append("その単語[") .append(yours.charAt(yours.length() - 1)) .append("]で始まってないじゃん!")); continue; } if (!DICTIONARY.contains(mine)) { System.out.println("その単語知らない!知ってそうな単語を入力して!"); continue; } if(USED.contains(mine)){ System.out.println("その単語使ったよ!忘れたとはいわせないよ!"); continue; } USED.add(mine); List<String> result = search(mine.charAt(mine.length() - 1)); if (result.isEmpty()) { System.out.println("もうわかんない.負けたー"); return; } yours = result.get(RANDOM.nextInt(result.size())); if(USED.contains(yours)){ System.out.println(new StringBuilder().append('[').append(yours).append(']') .append("は言ったっけー.わかんない.まけたー")); return; } System.out.println(new StringBuilder().append("じゃあ[") .append(yours).append(']').append('!')); } } public static final List<String> search(char firstChar) { List<String> result = new ArrayList<>(); for (String word : DICTIONARY) { if (word.charAt(0) == firstChar) { result.add(word); } } return result; }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2015/10/16 05:59

どこで警告が出ているのでしょうか?listという変数は無いようですが…
msia

2015/10/16 06:26

c:\java10\lesson01>javac shiritori.java shiritori.java:18: エラー: Listの参照はあいまいです private static final List<String> DICTIONARY = Collections ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します shiritori.java:21: エラー: Listの参照はあいまいです private static final List<String> USED = new ArrayList<>(); ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します shiritori.java:90: エラー: Listの参照はあいまいです public static final List<String> search(char firstChar) { ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します shiritori.java:26: エラー: シンボルを見つけられません RANDOM = SecureRandom.getInstanceStrong(); ^ シンボル: 変数 SecureRandom 場所: クラス Shiritori shiritori.java:27: エラー: シンボルを見つけられません } catch (NoSuchAlgorithmException e) { ^ シンボル: クラス NoSuchAlgorithmException 場所: クラス Shiritori shiritori.java:68: エラー: Listの参照はあいまいです List<String> result = search(mine.charAt(mine.length() - 1)); ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します shiritori.java:91: エラー: Listの参照はあいまいです List<String> result = new ArrayList<>(); ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します エラー7個 です。すいません
guest

回答3

0

importしているjava.awt.*java.util.*の両方にListクラスが存在するため,どっちのListかコンパイラから解釈できないためのエラーです.
使用するクラスを明確にimportしなければいけません.
この場合は

java

1import java.util.List;

です.これでListとその変数絡みのエラーは解消します.
あと2つエラーが残りますが,java.security.*をimportしていないことによるものです.

ちなみにEclipse4.4.2,Java8を使った場合はエラーは出ませんでした.型推論が働いたためと思われます.

投稿2015/10/16 06:28

編集2015/10/16 06:35
swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

msia

2015/10/16 06:57

java.awt.*を消すとエラーが2つになりました ですがjava.awt.*とjava.util.*をけしてimport java.util.List;を入れたらエラーが5つになりました どっちが正解なんでしょうか?エラーが少ないほうでやるべきでしょうか?
swordone

2015/10/16 06:59

その2つを両方残した上でimport java.util.List;で解決します. ですが理想をいえば各クラスごとにimportするのが一番いいです.
msia

2015/10/16 07:07

早い回答ありがとうございます 頑張ってみます
guest

0

パッケージは異なるが、同一のクラス名をもつクラスをimportして使用するとコンパイラがどちらのクラスなのか判定できなくなるためエラーが出ます。
この場合listのクラスが複数のimportの中に存在するのでしょう。

エラー箇所を明示していただけるともっと詳しく説明できます。

投稿2015/10/16 06:14

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

msia

2015/10/16 06:16

c:\java10\lesson01>javac shiritori.java shiritori.java:18: エラー: Listの参照はあいまいです private static final List<String> DICTIONARY = Collections ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します shiritori.java:21: エラー: Listの参照はあいまいです private static final List<String> USED = new ArrayList<>(); ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します shiritori.java:90: エラー: Listの参照はあいまいです public static final List<String> search(char firstChar) { ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します shiritori.java:26: エラー: シンボルを見つけられません RANDOM = SecureRandom.getInstanceStrong(); ^ シンボル: 変数 SecureRandom 場所: クラス Shiritori shiritori.java:27: エラー: シンボルを見つけられません } catch (NoSuchAlgorithmException e) { ^ シンボル: クラス NoSuchAlgorithmException 場所: クラス Shiritori shiritori.java:68: エラー: Listの参照はあいまいです List<String> result = search(mine.charAt(mine.length() - 1)); ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します shiritori.java:91: エラー: Listの参照はあいまいです List<String> result = new ArrayList<>(); ^ java.utilのインタフェース java.util.Listとjava.awtのクラス java.awt.Listの両方が一致します エラー7個 です。すいません
yona

2015/10/16 07:26

private static final java.util.List<String> DICTIONARY = Collections 上記のように完全修飾名で指定すれば大丈夫だと思いますよ。
msia

2015/10/20 03:11

ありがとうございます!
guest

0

ベストアンサー

package, import文まで含めた全文です.
packageは必要に応じて変えてください.

Java

1package shiritori; 2 3import java.io.BufferedReader; 4import java.io.IOException; 5import java.io.InputStreamReader; 6import java.security.NoSuchAlgorithmException; 7import java.security.SecureRandom; 8import java.util.ArrayList; 9import java.util.Arrays; 10import java.util.Collections; 11import java.util.List; 12import java.util.Random; 13 14public class Shiritori { 15 16 private static final BufferedReader READER = new BufferedReader( 17 new InputStreamReader(System.in)); 18 19 private static final List<String> DICTIONARY = Collections 20 .unmodifiableList(Arrays.asList("りんご", "ごりら", "らっぱ","ぱんつ","つくし", "しりとり","しめじ")); 21 22 private static final List<String> USED = new ArrayList<>(); 23 24 private static final Random RANDOM; 25 static { 26 try { 27 RANDOM = SecureRandom.getInstanceStrong(); 28 } catch (NoSuchAlgorithmException e) { 29 throw new RuntimeException(e); 30 } 31 } 32 33 public static void main(String[] args) throws IOException { 34 String yours = DICTIONARY.get(RANDOM.nextInt(DICTIONARY.size())); 35 System.out.println(new StringBuilder().append("じゃあねー最初は[").append(yours) 36 .append(']').append("だよ")); 37 38 for (;;) { 39 final String mine = READER.readLine(); 40 41 if (mine.isEmpty()) { 42 continue; 43 } 44 45 if(mine.equals("!")){ 46 System.out.println("へへん.勝ったー!"); 47 return; 48 } 49 50 if (yours.charAt(yours.length() - 1) != mine.charAt(0)) { 51 System.out.println(new StringBuilder().append("その単語[") 52 .append(yours.charAt(yours.length() - 1)) 53 .append("]で始まってないじゃん!")); 54 continue; 55 } 56 57 if (!DICTIONARY.contains(mine)) { 58 System.out.println("その単語知らない!知ってそうな単語を入力して!"); 59 continue; 60 } 61 62 if(USED.contains(mine)){ 63 System.out.println("その単語使ったよ!忘れたとはいわせないよ!"); 64 continue; 65 } 66 67 USED.add(mine); 68 69 List<String> result = search(mine.charAt(mine.length() - 1)); 70 71 if (result.isEmpty()) { 72 System.out.println("もうわかんない.負けたー"); 73 return; 74 } 75 76 yours = result.get(RANDOM.nextInt(result.size())); 77 78 if(USED.contains(yours)){ 79 System.out.println(new StringBuilder().append('[').append(yours).append(']') 80 .append("は言ったっけー.わかんない.まけたー")); 81 return; 82 } 83 84 System.out.println(new StringBuilder().append("じゃあ[") 85 .append(yours).append(']').append('!')); 86 87 } 88 89 } 90 91 public static final List<String> search(char firstChar) { 92 List<String> result = new ArrayList<>(); 93 for (String word : DICTIONARY) { 94 if (word.charAt(0) == firstChar) { 95 result.add(word); 96 } 97 } 98 return result; 99 } 100} 101

投稿2015/10/16 12:33

編集2015/10/16 12:36
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

msia

2015/10/20 03:10

丁寧にありがとうございます!!
退会済みユーザー

退会済みユーザー

2015/10/20 05:56

どういたしまして.他の方が述べられているように,同名クラスがインポートされており型が明確でなくなっています.インポート文では"java.awt.*"や"java.util.*"などを用いるべきではありません.個別に"java.util.List", "java.util.ArrayList"といったように書くべきです. 開発にEclipseを使用していますか?Eclipseでは"Ctrl+Shift+O"により自動でインポート文を更新できます.間違いを減らすためにも,自分でインポート文を書かないようにし,ショートカットを積極的に使いましょう.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問