• 締切済み

JAVAコンパイルができない。

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

  • homma
  • お礼率84% (744/884)
  • Java
  • 回答数8
  • ありがとう数4

みんなの回答

  • ora540
  • ベストアンサー率83% (5/6)
回答No.8

JDKをバージョンアップしたらパスが通らなくなりコンパイルが出来なくなってしまったとのことですが、以下の手順で改善しないでしょうか? 「http://www.oracle.com/technetwork/java/javase/downloads/index.html」から「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」と入力すると、環境変数の設定が表示されるので、意図した設定になっているか、「;」や「¥」が抜けていないかを確認してください。 また、環境変数を設定中に「コマンドプロンプト」画面を開いたままにしていると、その画面には環境変数の修正結果は反映されません。一度閉じて開き直すか、別の”コマンドプロンプト”画面を開いて設定が反映されたかを確認するようにしてみてください。

  • ora540
  • ベストアンサー率83% (5/6)
回答No.7

ごめんないさい 確認コマンド記載ミスしてました JDKのバージョン確認が javac -version JREのバージョン確認が java -version なので javac -version で確認して version1.4.x とか version1.5.x ではisEmptyメソッドは使えないJDKのバージョンになります

homma
質問者

お礼

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

  • ora540
  • ベストアンサー率83% (5/6)
回答No.6

Javaと書いてあったのをJDK(Java開発キット)の方を指していると思ってみていたのですが、JRE(Java実行環境)のほうがJava7という意味だったのであればJDKをインストールする必要があります。 まずは、実際どのJDKが認識されているかを、コマンドライン画面で「javac -version」(-java version」ではなく) と入力して確認してはどうでしょうか 古いようであればJDKを更新してパスの設定をすると良いと思います。

参考URL:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • MyPaseSE
  • ベストアンサー率66% (2/3)
回答No.5

開発環境のJDKが5.0に設定されているのだと思います。 Java API(Javadoc)確認したら、Stringクラスの isEmptyメソッドは6.0から導入のと記載がありました。 ちなみに、このメソッドは同クラスのlengthメソッドが 0となるパターンでtrueを返す仕様になっています。 JDKを6.0に変更する、または"line.length() == 0"で 代用する方法はいかがですか?

homma
質問者

お礼

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

  • ora540
  • ベストアンサー率83% (5/6)
回答No.4

No.3さんへ ピリオドのことではないかと思います。 勝手にコロンと書いてあるところを私の頭がピリオドに翻訳して回答してしまいました。 test_20120707.java:12: シンボルを解決できません。 シンボル:メソッド isEmpty() 場所  :test_20120707のクラス if (line.isEmpty()) {     ^ という状態と予測したのですがどうでしょうか?

homma
質問者

お礼

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

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

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

homma
質問者

お礼

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

  • ora540
  • ベストアンサー率83% (5/6)
回答No.2

私の環境はJava6ですが、ソースをコピーさせて実行してもNo.1さんと同じでエラーにはなりませんでした。 「シンボルがが解決できない」エラーがでるのは、 ・^の指す変数名、メソッド名、クラス名のスペルミス ・それらの宣言の忘れ ・クラス名の場合、import文の忘れ ・標準ライブラリ以外では、クラスパス設定の誤りの場合 です。 String#isEmptyメソッドはJava6からできたものです。 Java7以外の古いJavaもシステムに残っているのではないでしょうか。 もしも環境変数「Path」でJavaへのパスの書き順が、古いバージョンのJavaへのパスが左に、Java7へのパスが右に書かれていると、左側から優先利用されるので、isEmptyメソッドが未知のメソッドとしてエラーになるのではと思います。

  • pokeman-v
  • ベストアンサー率29% (8/27)
回答No.1

コピーして実行したら、エラーが出ませんでしたよ 実行する際は、どのような方法でされてますか?

関連するQ&A

  • JAVAのコンパイルについて教えてください。

    public class exam05d { public static void main(String[] args) { int value=args[0]; if(value==0) { System.out.println("valueの値は0"); } else { System.out.println("valueの値は0以外"); } } } 上記のプログラムをコンパイルすると exam05d.java:3: 互換性のない型 検出値:java.lang.String 期待値:int int value=args[0]; というエラーが出てしまいます。 これを正常に動作させるにはどう改良すれば良いか教えて頂けないでしょうか。 また変更を行わなければならない理由も教えていただけると有難いです。 プログラミングを始めたばかりで行き詰っています。 回答お待ちしております。

  • java 入力命令

    以下うまくどうさしません、教えてください。 public class Main { public static void main(String[] args){ System.out.println("名前"); String name = new java.util.Scanner(System.in) .nextLine(); System.out.println("年齢"); int age = new java.util.Scanner(System.in) .nextInt(); System.out.println (age + name); } }

  • JAVAについて

    現在JAVAについて学んでいるのですが、下記のソースが実行出来ません。どなたかわかる方、回答宜しくお願いいたします。 public class Lound { void main(String[] args) { String rtn = methWithParamReturn(3); if(rtn.equals("0")) System.out.println("0あかんよ"); else System.out.println(rtn); } public String methWithParamReturn(int x) { System.out.println(x); x= x*x; String str = String.valueOf(x); return str; } }

  • 教科書に載っていた、Javaのプログラムなのですがなぜかコンパイルでき

    教科書に載っていた、Javaのプログラムなのですがなぜかコンパイルできません。 import java.until.Scanner; class ScanInteger{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.print("整数値:"); int x = scan.nextInt(); System.out.println(x + "と入力しましたね。"); } } エラーの内容としては、ScannerクラスのSに何か原因があると言うようなものが出ます。 よろしくお願いします。

  • javaについて

    キーボードから入力をして、その後str[0][0]とstr[1][0]の文字を繋げたいのですがエラーとなってしまいます。どう変えたらよいでしょうか。 以下がプログラムです。 import java.io.*; import java.lang.*; import java.net.*; import java.awt.*; class gugu3 { public static void main(String[] args) throws IOException { int KEYWORDMAX=10; int CNTMAX=100; String [][]str = new String[KEYWORDMAX][CNTMAX]; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line=null; for (int i=0;i<KEYWORDMAX;i++){ System.out.println("第"+(i+1)+"番目のキーワードを設定しますか?(y/n)"); line=br.readLine(); if(line.equals("n")) break; for (int s=0;s<CNTMAX;s++){ System.out.println("キーワードを入力してください(終了=0)"); line=br.readLine(); if(line.equals("0"))break; str[s][i]=line; } } String keyword = new String(str[0][0]" "str[1][0]); System.out.println("キーワードは "+keyword); } } 以下はエラー表示です。 gugu3.java:24: ')' がありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ gugu3.java:24: 文ではありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ gugu3.java:24: ';' がありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ エラー 3 個

    • ベストアンサー
    • Java
  • javaのコンパイルエラーについてです。

    「これならわかるJava」という本でjavaを勉強してます。 以下のソースコードをコンパイルした所、 「注:DogList.java の操作は、未チェックまたは安全ではありません。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください」 と、表示されます。 ネットで色々と調べてみましたが上手く行きません。 よろしくお願い致します。 import java.io.*; import java.util.*; class Dog { private String name; private int energy; public Dog(String n, int e){ name = n; if(e < 0) e = 0; energy = e; } public Dog(){ this("未定",50); } public void bark(){ if(energy == 0){ System.out.println("お腹が減ってほえられないよ。"); return; } System.out.println("わん、わん!"); energy--; } public void intro(){ System.out.println("僕の名前は" + name + "だ。わん。"); System.out.println("エネルギーは" + energy +"だ。わん。"); } public void eat(int e){ if(e < 0){ System.out.println("マイナスは与えられません。"); return; } energy += e; } public String getName(){ return name; } public void setName(String n){ name = n; } public int getEnergy(){ return energy; } public void setEnergy(int e){ if(e < 0) e = 0; energy = e; } public String toString(){ return "僕の名前は" + name + "だ。わん。\n" +"エネルギーは" + energy + "だ。わん。" ; } } class DogList { public static void main(String[] args) throws IOException { Vector dogs = new Vector(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str, name; int n, energy; for(;;){ System.out.println("名簿:どうしますか?"); System.out.println("1 一覧 2 追加 3 終了"); str = br.readLine(); n = Integer.parseInt(str); if(n == 1){ for(int i = 0; i < dogs.size(); i++){ ((Dog)dogs.elementAt(i)).intro(); System.out.println("-----"); } } else if(n == 2){ System.out.println("名前を入力:"); name = br.readLine(); System.out.println("エネルギーを入力:"); str = br.readLine(); energy = Integer.parseInt(str); dogs.addElement(new Dog(name, energy)); } else{ break; } } } }

    • ベストアンサー
    • Java
  • Javaの初心者です

    Javaの勉強をしています。 以下のコードを作成しました。 import java.util.*; public class Main { public static void main(String[] args) { int flg = 0; Scanner sc = new Scanner(System.in); String str = sc.next(); String data = sc.next(); if (data == str) { flg = 1; } if (flg == 1) { System.out.println("YES"); } else { System.out.println("NO"); } } } 標準入力に A A を入力して実行しました。 YESと表示されるのを期待していたのですが、NOと表示されます。 何が悪いのでしょうか?

    • ベストアンサー
    • Java
  • Javaで先頭の0を含め整数の桁数を取得したい

    Javaで整数の桁数を取得したいのですが、 Scanner ids = new Scanner(System.in); int i = ids.nextInt(); String s = String.valueOf(i); int keta = s.length(); こうした場合に 12345678 と入力すれば8が取得できるのですが、 09876543 と入力したときに7と取得してしまいます。 先頭の0を無視せずに取得するにはどうすればよいでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • javaの数字当てゲーム

    javaで数字当てゲーム作りたいです。 ここまで出来ています。 しかし、もう一度やりますか?というオプションで、yと入力すればもう一回、 nと入力すれば終わるようにしたいです。 それから、最後に何回ゲームを遊んだか、トータルで数字を何回予想したか、という情報も出力したいです。 できれば、正解するまでに平均で何回かかったかと、一番少なかった数も出力したいです。 よろしくお願いします import java.util.*; public class NumberGuess { public static void main(String args[]) { boolean b = true; int computer = (int) (Math.random() * 100) + 1; int player = 0; int count = 0; System.out.println("1~100の数当てゲーム"); if (computer < 0) { computer *= -1;} while (b) { count++; Scanner keyboard = new Scanner(System.in); System.out.print("1~100の数字を入力してください "); player = keyboard.nextInt(); if (computer > player) { System.out.println("CPUが作成した数字はもっと大きいです"); } else if (computer < player) { System.out.println("CPUが作成した数字はもっと小さいです"); } else if (computer == player) { System.out.println( count + "回目で当てました"); } } } } 直すべきところもあれば教えてください。

  • java コンパイル

    はじめまして。これは2つの数を入力してそれそれの和、差、積、剰余を表示するソースファイル(入力時の妥当性チェックは考慮しない。)なのですがこれがコンパイルエラーになってしまいます。 import java.io.*; interface plus { int Plus(); } interface sub { int Sub(); } interface mul { int Mul(); } interface mod { int Mod(); } class Compute implements plus,sub,mul,mod { int pa,pb; Compute(int a,int b) { this.pa=a; pb=b; } public int Plus() { return(pa+pb); //和を返す } public int Sub() //差を返す { return(pa-pb); } public int Mul() { return(pa*pb); //積を返す } public int Mod() { return(pa%pb); //余を返す } } class calc { public static void main(String args[]) throws IOException { InputStreamReader isp=new InputStreamReader(System.in); BufferedReader inp=new BufferedReader(isp); System.out.print("数1="); String sLine=inp.readLine(); //1つめの数値を入力 int a=Integer.parseInt(sLine); System.out.print("数2="); String sLine=inp.readLine(); //2つめの数値を入力 int b=Integer.parseInt(sLine); Compute c=new Compute(a,b); System.out.println("和:"+c.Plus()+"差:"+c.Sub()+"積:"+c.Mul()+"余:"+c.Mod()); } } というソースファイルなのですが、これが下記のようなエラーが出てしまいます。 String sLine=inp.readLine(); //2つめの数値を入力 の部分で sLineはmain(java.lang.String[])で定義されています と出ました。 良く見てみてのですが(java.lang.String[])の意味がよくわかわりません。これはどういう意味をもつのでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう