• 締切済み

Javaプログラミング1001Tipsより。

Javaプログラミング1001Tipsの書籍にある例文をコンパイルしようとすると。 注:practice.javaは推奨されないAPIを使用またはオーバーライドしています。 注:詳細については-deprecationオプションをしていして再コンパイルしてください。 というエラーがでます。普通にコンパイルして実行するだけでは駄目なのでしょうか? import java.util.Date; class practice { public static void main(String arg[]) { Date now= new Date(); System.out.println(now.toGMTString().substring(12)); System.out.println(now.getHours() + ":" + now.getMinutes()); } }

  • Java
  • 回答数4
  • ありがとう数4

みんなの回答

  • mojimojio
  • ベストアンサー率51% (14/27)
回答No.4

下位互換ですよ。「推奨されない」(多くは設計の変更により同じ機能の別のAPIが提供されている)のであって、使えないわけではありません。 これはコンパイルエラーではなくてWarningですので、コンパイル自体は完了していて、生成されたクラスファイルも通常どおり実行できます。 メッセージにあるとおり、javacに-deprecationオプションを付けて実行してみましょう。推奨されていないAPIはどれかと、その代わりに使うべきAPIが示されるはずです。 こういった手間がJavaの勉強に役立つかどうかは分からないですが、そんなに頻繁に起きることではないですし、本がまったく無駄になるわけではないと思います。

回答No.3

本で使っているJDKのバージョンと、 あなたが使っているJDKのバージョンが違うため起こっています。 問題なくコンパイルしたい場合は、その本と同じJDKを使ってみてください。 ただ、あなたの使っているバージョンの方が新しい(と思う)ので、 もし実用的なアプリケーションを作るのであれば No.1さんの言われたような今のやり方を身に付けておいた方が良いと思います。

gohappy
質問者

お礼

ありがとうございます。 Ver1.0.1が添付CDに入ってました。 JAVAって下位互換してないのですか?? 5000円もだして買った本なのに残念です。 「a-kuma」さんのやり方だとコンパイルできます。 ただ、この買った本は無駄になってしまうんですね、、、(泣)。

noname#4564
noname#4564
回答No.2

書籍の内容に関する質問なら、無関係な第三者に尋ねるより先に、出版社なり著者なりに問い合せるのがスジでは? 出版社名もISBNコードも書いてないし・・・。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

Date クラスの getHours() や getMinutes() は、推奨されないメソッドになりました。動かないわけではないんですけれど。 今は、Calendar クラスを使うことが推奨されています。 Date now = new Date(); Calendar calendar = new Calendar(); calendar.setTime(now); System.out.println(calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE)); ってな感じで。

gohappy
質問者

お礼

ありがとうございます。 Ver1.0.1が添付CDに入ってました。 JAVAって下位互換してないのですか?? 5000円もだして買った本なのに残念です。 「a-kuma」さんのやり方だとコンパイルできます。 ただ、この買った本は無駄になってしまうんですね、、、(泣)。

関連するQ&A

  • Javaのsubstringのendパラメータについて

    Javaでは、endパラメータが何故+1なのでしょうか? String a = "ABCDEFG"; System.out.println(a.substring(0,0+1)); // A System.out.println(a.substring(1,2+1)); // BC System.out.println(a.substring(3,5+1)); // DEF perlなどでは、以下のようだった気がしますが・・・ substring(a, 0, 0); substring(a, 1, 2); substring(a, 3, 5); 理由をご存知の方教えてください。 こういうのはJavaではよくあることででしょうか?

    • ベストアンサー
    • Java
  • javaプログラミング これってできるでしょうか?

    Javaのプログラミングで、例えば System.out.println(""); の、System.out.printlnを変数で代入して、仮にyを代入したとしらその後の System.out.println("");は y(""); にしたりすることはできるのでしょうか?できるのならどうやってやるのでしょうか? 回答よろしくお願いします。

    • ベストアンサー
    • Java
  • コンパイルができないのですが・・・

    JAVA初心者です!!コンパイルをしようと思うのですが、今までできたのに突然コンパイルエラーが起きました。わかる方いましたら教えていただけないでしょうか? メッセージは以下のとおりです。 注:MyFrame.javaは推奨されないAPIを使用またはオーバーライドしています。 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。

    • ベストアンサー
    • Java
  • java プログラミング

    以下のプログラムを改良したいのですがどの用に書き換えればいいかわからないので皆さんの力を貸してください。 1.最後に表示されるメールアドレスの後には;を表示しない。 2.コンマやセミコロンなどで区切られているメールアドレスも認識する(現段階では二つのアドレスの間にスペースがないと認識できません)aaa@bbb.ccc,AAA@BBB.CCC;AaA@BbB.CcCを認識する。 3. メルアドレスだけが一列ごとに並んでいるものを認識する。 aaa@bbb ccc@ddd eee@fffなどです。 メールアドレスの検出の仕方として@から前後にスペースがあるまでループするようにしてあるので上記の場合うまく働きません。以上の三点をみたすように改良するのに必要なコードブロックを教えてください。 プログラミング初心者なのでなるべく簡単に説明していただけると幸いです。 import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; public class Email { @SuppressWarnings("unchecked") public static void main(String[] argv) throws Exception { String input = "fileContainingEmails.txt"; String output = "copyPasteMyEmails.txt"; BufferedReader cin; cin = new BufferedReader(new InputStreamReader(System.in)); String userInput; System.out.println("Enter input file name [default name: " + input + " ]"); userInput = cin.readLine(); if (userInput.equals("")) userInput = input; String name; if (userInput.equals(input)) name = output; else name = userInput; String userOutput; System.out.println("Enter output file name [default name: " + name + " ]"); userOutput = cin.readLine(); if (userOutput.equals("")) userOutput = name; System.out.println("Input FIle : " + userInput); System.out.println("Output FIle : " + userOutput); BufferedReader fin; fin = new BufferedReader(new FileReader(userInput)); PrintWriter fout; fout = new PrintWriter(new FileWriter(userOutput, true)); String lineFromFile = ""; List listOfMail = new ArrayList(); int indexOfAt = 0; int s = 0,e = 0; while (fin.ready()) { lineFromFile = fin.readLine(); indexOfAt = lineFromFile.indexOf('@',indexOfAt); while(indexOfAt > 0) { for(int i = 0;lineFromFile.charAt(indexOfAt - i) != ' ';i++) s = indexOfAt - i; for(int i = 0;lineFromFile.charAt(indexOfAt + i) != ' ';i++) e = indexOfAt + i; if(listOfMail.indexOf(lineFromFile.substring(s,e).toLowerCase()) < 0) { listOfMail.add(lineFromFile.substring(s,e).toLowerCase()); fout.println(lineFromFile.substring(s,e).toLowerCase()); System.out.print(lineFromFile.substring(s,e)); System.out.println(";"); } indexOfAt = lineFromFile.indexOf('@',indexOfAt + 1); } } fin.close(); fout.close(); System.out.println(); int count = 0; count = listOfMail.size(); if (count == 0) System.out.println("Sorry, no email addresses were found in the file " + userInput); else System.out.println(count + " email addresses were found, and copied to " + userOutput); System.out.println("Open " + userOutput + " and copy and paste those e-mail addresses into the to, cc, or bcc field."); System.out.println("Pasting into bcc field is the best way because everyone's email address does not appear in the message."); } }

  • プログラム中でjavaのバージョンを「数値」で取得したい

    1.5以上の場合などと分けたいので、数値で取得したいです。 下記のメソッドで文字列として取得し、substringなどで先頭3文字を取得し数値に変換などの方法しかないのでしょうか? System.out.println(System.getProperty("java.version")); System.out.println(System.getProperty("java.vm.version")); System.out.println(System.getProperty("java.specification.version"));

    • ベストアンサー
    • Java
  • java プログラミングについて

    独学でjavaに挑戦中ですが、書店で購入した本のソースプログラムを少し変えたいのですが、ご教授をお願いします。数当てゲームのプログラムで、一つの設問を正解すると終了するゲームですが、複数の設問を設定したいのです、質問がうまく伝わるか不安ですがよろしくお願いします、プログラムを少しだけ書いておきます。 import java.io.*; class Mojiretuate { public static void main(String[] args) throws IOException { String str = "こんにちは";  /*質問箇所*/ String str2; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列当てゲームです。"); System.out.println("答えは何かのあいさつです。"); for(;;){ System.out.println("\n入力:"); str2 = br.readLine(); System.out.println("入力文字列の長さ:" + str2.length()); if(str.equals(str2)){ System.out.println("正解です!"); break; } 

    • ベストアンサー
    • Java
  • javaプログラミング この文章正確ですか?

    先ほど質問させていただきましたがもう一回質問させていただきます。 class Hello{ public static void main(String[] args) { System.out.println("まいど!”) ; javaの参考書で勉強しています。 これをコンパイルしろということなんですがコマンドプロンプトが読み取ってくれません。間違いがあったら教えてください!

    • ベストアンサー
    • Java
  • -deprecationとは?

    ファイルをコンパイルしたところ、以下のメッセージが出ました。 「ListSample.java は推奨されない API を使用またはオーバーライドしています。 詳細については、-deprecation オプションを指定して再コンパイルしてください」 詳細を知りたいのですが、-deprecationというオプションはどうやって指定するのでしょうか?教えてください。

    • ベストアンサー
    • Java
  • javaで判別式のプログラミングを作りたいのですが

    javaで二次方程式ax2+bx+c=0が,2つの異なる実数解をもつ,実数の重解をもつ,実数解をもたないのいずれであるかを判別するプログラムを作りたいのですが、 何度実行しても正しい答えが出てくれません。なぜでしょうか? import java.util.Scanner; class Kadai { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int a,b,c,d; System.out.println("二次方程式y=ax^2+bx+cの解を判別します。"); System.out.print("aを入力してください。:"); a = sc.nextInt(); System.out.print("bを入力してください。:"); b = sc.nextInt(); System.out.print("cを入力してください。:"); c = sc.nextInt(); d=b^2-4*a*c; System.out.println("y="+a+"x^2+"+b+"x+"+c+"の判定は以下の通りです。"); if(d>0){ System.out.println("判別式D>0"); System.out.print("2つの異なる実数解をもつ。"); } if(d==0){ System.out.println("判別式D=0"); System.out.print("実数の重解をもつ。"); } if(d<0){ System.out.println("判別式D<0"); System.out.print("実数解をもたない。"); } } } これを実行すると下の画像のように異なる結果が出てしまいます。 この場合、正しくは実数の重解を持つですよね? どこが間違っているか指摘してくださると嬉しいですm(_ _)m

    • ベストアンサー
    • Java
  • javaプログラミングについて!

    ただいまjavaプログラミングの勉強をしております。 そこで数字を複数回入力させ、-1を入力すると終了し、その数字の最大、最小、平均を出力するプログラムを作っているのですが、 public static void main(String[] args) { int max = 0; int min = 100; int sum = 0; int count = 0; Scanner sc = new Scanner(System.in); System.out.println("正の整数を入力してください"); int n = sc.nextInt(); while (num01 != -1){ System.out.println("正の整数を入力してください"); sum += n; n = sc.nextInt(); count++; if(max < n) max = n; if(min > n) min = n; } System.out.println("入力された整数の最大は" + max); System.out.println("入力された整数の最小は" + min); System.out.println("入力された整数の平均は" + sum/count); } } このようなプログラミングが作れたのですが、たとえば30と10を入力したときに 最大10 最小-1 平均20 と表示されてしまいます。色々試行錯誤してみたのですが、改善されなかったため質問させて頂きました。原因と解決方法を教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう