以下のサンプルプログラムをコンパイルすると
シンボルを見つけられません。
と出ます。
場所は:java.lang.Stringの クラス
if(line.isEmpty())
のlineとisEmpty()の間のコロンに「^」がついています。
javaのバージョンは「1.7.0_05」です。
PCのOSはXP Pro(SP2)です。
原因がわかる方教えてください。
import java.util.Scanner;
public class test_20120707 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int total = 0;
while (true) {
System.out.println("現在までの合計は " + total + " です。");
System.out.print("整数を入力: ");
String line = scanner.nextLine();
if (line.isEmpty()) {
break;
}
int value = Integer.valueOf(line);
total += value;
}
}
}
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
私の環境はJava6ですが、ソースをコピーさせて実行してもNo.1さんと同じでエラーにはなりませんでした。
「シンボルがが解決できない」エラーがでるのは、
・^の指す変数名、メソッド名、クラス名のスペルミス
・それらの宣言の忘れ
・クラス名の場合、import文の忘れ
・標準ライブラリ以外では、クラスパス設定の誤りの場合
です。
String#isEmptyメソッドはJava6からできたものです。
Java7以外の古いJavaもシステムに残っているのではないでしょうか。
もしも環境変数「Path」でJavaへのパスの書き順が、古いバージョンのJavaへのパスが左に、Java7へのパスが右に書かれていると、左側から優先利用されるので、isEmptyメソッドが未知のメソッドとしてエラーになるのではと思います。
No.4
- 回答日時:
No.3さんへ ピリオドのことではないかと思います。
勝手にコロンと書いてあるところを私の頭がピリオドに翻訳して回答してしまいました。
test_20120707.java:12: シンボルを解決できません。
シンボル:メソッド isEmpty()
場所 :test_20120707のクラス
if (line.isEmpty()) {
^
という状態と予測したのですがどうでしょうか?
No.5
- 回答日時:
開発環境のJDKが5.0に設定されているのだと思います。
Java API(Javadoc)確認したら、Stringクラスの
isEmptyメソッドは6.0から導入のと記載がありました。
ちなみに、このメソッドは同クラスのlengthメソッドが
0となるパターンでtrueを返す仕様になっています。
JDKを6.0に変更する、または"line.length() == 0"で
代用する方法はいかがですか?
回答ありがとうございます。
バージョンということですか。
確かにバージョン確認をjava -varsionでとっていたのでJREのバージョンということになるのでしょうかね。
メールが遅れましたことをお詫びします。
No.6
- 回答日時:
Javaと書いてあったのをJDK(Java開発キット)の方を指していると思ってみていたのですが、JRE(Java実行環境)のほうがJava7という意味だったのであればJDKをインストールする必要があります。
まずは、実際どのJDKが認識されているかを、コマンドライン画面で「javac -version」(-java version」ではなく)
と入力して確認してはどうでしょうか
古いようであればJDKを更新してパスの設定をすると良いと思います。
参考URL:http://www.oracle.com/technetwork/java/javase/do …
No.7
- 回答日時:
ごめんないさい 確認コマンド記載ミスしてました
JDKのバージョン確認が javac -version
JREのバージョン確認が java -version
なので
javac -version で確認して version1.4.x とか version1.5.x ではisEmptyメソッドは使えないJDKのバージョンになります
回答ありがとうございます。
バージョンということですか。
確かにバージョン確認をjava -varsionでとっていたのでJREのバージョンということになるのでしょうかね。
メールが遅れましたことをお詫びします。
PS.JDKをバージョンアップしましたが、今度はパスが通らなくなりコンパイルが出来なくなってしまいました。
質問のプログラムを実行するのにまだまだ時間がかかりそうです。
ありがとうございました。
No.8
- 回答日時:
JDKをバージョンアップしたらパスが通らなくなりコンパイルが出来なくなってしまったとのことですが、以下の手順で改善しないでしょうか?
「http://www.oracle.com/technetwork/java/javase/do …」から「Java SE 7u5」の「JDK DOWNLOAD」を選択し、Windows32用である Windows x86-「jdk-7u5-windows-i586.exe」をインストールしているという前提です。
【 パスの設定 】
1.「Windows」キーを押しながら「Pause」キーを押して”システム”画面を開きます。
2.「システム詳細設定」をクリックし、システムのプロパティを開きます。
3.詳細設定タブの「環境変数」をクリックします。
4.システム環境変数「Path」を選択し、「編集」をクリックします。(大文字小文字は無視されるので 「Path」「PATH」「path」はどれも同じです。例えば「PATH」があるのに「Path」を新規作成すると、「PATH」の内容を置き換えてしまうので注意してください。)
5.「変数値」の 最初 に「C:\Program Files\Java\jdk1.7.0_05\bin;」を追記します。(規定値のフォルダへインストールの場合)
6.結果、編集後の「Path」の「変数値」は、「C:\Program Files\Java\jdk1.7.0_05\bin;【元々のシステム環境変数入力値】」とします。 ( セミコロン(;)は複数の値を設定する場合の区切り文字なので、忘れずに記述します ) 「OK」をクリックします。
7.環境変数で「OK」をクリックします。
8.システムのプロパティで「OK」をクリックします。
【 設定の確認 】
1.「Windows」+「R」キーを押して「ファイル名を指定して実行」画面を開き、名前欄に「cmd」と入力し、「OK」をクリックすると、「コマンドプロンプト」画面が開きます。
2.「java -version」と入力すると、「java version “jdk1.7.0_05″」と表示されるはずです。
3.「javac -version」と入力すると、「javac jdk1.7.0_05」と表示されるはずです。
`javac`は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」と表示されエラーになる場合は、「コマンドプロンプト」画面で「path」または「set」と入力すると、環境変数の設定が表示されるので、意図した設定になっているか、「;」や「¥」が抜けていないかを確認してください。
また、環境変数を設定中に「コマンドプロンプト」画面を開いたままにしていると、その画面には環境変数の修正結果は反映されません。一度閉じて開き直すか、別の”コマンドプロンプト”画面を開いて設定が反映されたかを確認するようにしてみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
シンボルが見つかりませんというエラーが理解できません。
Java
-
同一パッケージにあるクラスが見つからないエラー
Java
-
java シンボルが見つかりません エラー
Java
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String.containsの反対機能はあ...
-
Java初級 引数に適用できません
-
レコード件数の表示
-
Strutsでチェックボックスの値...
-
説明文書でのメソッド・変数の...
-
Java初心者です、エラーの意味...
-
YYYYMMDD書式の日付に対する適...
-
Java初心者です。例外のキャッ...
-
戻り値の異なるメソッドの多重...
-
PreparedStatementのレスポンス...
-
コマンドライン引数のチェック
-
Google Apps Script で getRang...
-
abstract と static を一緒に付...
-
Jakarta POI での、excelのシ...
-
クラスに行って、戻ってくる方法
-
Javaの関数名が長い?
-
【アクセス修飾子】アクセス修...
-
java ジェネリックスに関して
-
別クラスのmainメソッドの実行
-
メソッドの引数に指定されてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
レコード件数の表示
-
StringBufferからStringへキャ...
-
C# 点の描き方をおしえてくだ...
-
Google Apps Script で getRang...
-
YYYYMMDD書式の日付に対する適...
-
C# でメソッドに送られてきたOb...
-
なぜprotected overrideなのか
-
Java初心者です、エラーの意味...
-
Strutsでチェックボックスの値...
-
メソッド宣言の戻り値の型にク...
-
abstract と static を一緒に付...
-
return new使用時
-
Javaの関数名が長い?
-
メソッドの引数に指定されてい...
-
クラスを作るとメソッドの数が...
-
public static void main (Stri...
-
説明文書でのメソッド・変数の...
-
readLine()ではじめから読み直...
おすすめ情報