プロが教えるわが家の防犯対策術!

以下のサンプルプログラムをコンパイルすると
シンボルを見つけられません。
と出ます。
場所は: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件)

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」と入力すると、環境変数の設定が表示されるので、意図した設定になっているか、「;」や「¥」が抜けていないかを確認してください。

また、環境変数を設定中に「コマンドプロンプト」画面を開いたままにしていると、その画面には環境変数の修正結果は反映されません。一度閉じて開き直すか、別の”コマンドプロンプト”画面を開いて設定が反映されたかを確認するようにしてみてください。
    • good
    • 0

ごめんないさい 確認コマンド記載ミスしてました



JDKのバージョン確認が javac -version

JREのバージョン確認が java -version


なので

javac -version で確認して version1.4.x とか version1.5.x ではisEmptyメソッドは使えないJDKのバージョンになります
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
バージョンということですか。
確かにバージョン確認をjava -varsionでとっていたのでJREのバージョンということになるのでしょうかね。
メールが遅れましたことをお詫びします。
PS.JDKをバージョンアップしましたが、今度はパスが通らなくなりコンパイルが出来なくなってしまいました。
質問のプログラムを実行するのにまだまだ時間がかかりそうです。
ありがとうございました。

お礼日時:2012/07/11 17:25

Javaと書いてあったのをJDK(Java開発キット)の方を指していると思ってみていたのですが、JRE(Java実行環境)のほうがJava7という意味だったのであればJDKをインストールする必要があります。



まずは、実際どのJDKが認識されているかを、コマンドライン画面で「javac -version」(-java version」ではなく)
と入力して確認してはどうでしょうか

古いようであればJDKを更新してパスの設定をすると良いと思います。

参考URL:http://www.oracle.com/technetwork/java/javase/do …
    • good
    • 0

開発環境のJDKが5.0に設定されているのだと思います。



Java API(Javadoc)確認したら、Stringクラスの
isEmptyメソッドは6.0から導入のと記載がありました。

ちなみに、このメソッドは同クラスのlengthメソッドが
0となるパターンでtrueを返す仕様になっています。

JDKを6.0に変更する、または"line.length() == 0"で
代用する方法はいかがですか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
バージョンということですか。
確かにバージョン確認をjava -varsionでとっていたのでJREのバージョンということになるのでしょうかね。
メールが遅れましたことをお詫びします。

お礼日時:2012/07/11 17:23

No.3さんへ ピリオドのことではないかと思います。


勝手にコロンと書いてあるところを私の頭がピリオドに翻訳して回答してしまいました。


test_20120707.java:12: シンボルを解決できません。
シンボル:メソッド isEmpty()
場所  :test_20120707のクラス

if (line.isEmpty()) {
    ^
という状態と予測したのですがどうでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
コロンとピリオド間違っていました。

お礼日時:2012/07/11 17:20

ん? 「lineとisEmpty()の間のコロン」って, どういうこと?

    • good
    • 0
この回答へのお礼

回答ありがとうございました。ピリオドと言うんでね。すみません。

お礼日時:2012/07/11 17:19

私の環境はJava6ですが、ソースをコピーさせて実行してもNo.1さんと同じでエラーにはなりませんでした。



「シンボルがが解決できない」エラーがでるのは、
・^の指す変数名、メソッド名、クラス名のスペルミス
・それらの宣言の忘れ
・クラス名の場合、import文の忘れ
・標準ライブラリ以外では、クラスパス設定の誤りの場合
です。

String#isEmptyメソッドはJava6からできたものです。
Java7以外の古いJavaもシステムに残っているのではないでしょうか。


もしも環境変数「Path」でJavaへのパスの書き順が、古いバージョンのJavaへのパスが左に、Java7へのパスが右に書かれていると、左側から優先利用されるので、isEmptyメソッドが未知のメソッドとしてエラーになるのではと思います。
    • good
    • 0

コピーして実行したら、エラーが出ませんでしたよ


実行する際は、どのような方法でされてますか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!