• 締切済み

やさしいJava第3版に間違いが?

高橋麻奈著のやさしいJava第3版の327ページの上から2番目の四角で囲んだプログラムの Name str = newName("1号車"); の部分の意味が分かりません。 String str = "1号車"; の間違いではないかと思っていますが、どうなのでしょうか?

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

夜中(早朝?)までやってる本屋に行って調べてきました(運良くこの本あってよかった)。 Name str = newName("1号車"); これは、まず new Name("一号車") の間のスペースがくっついているという間違いが一つ。 このページ付近を見ても、Name というクラスを定義していたり使っているところがないので 多分 SrtingであるべきところをNameにしているという間違いが一つ。 というのが考えられます。 で、Stringの初期化に関しては、 var = new String("ほげほげ"); と var "ほげほげ"; の二通りの書き方ができて云々というのは#1, #2の方の回答どおりと。 やさしいJava http://homepage3.nifty.com/~mana/yasaj.html の正誤表にもこれに関する情報はないですね。 連絡してみては?

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

失礼、Name → String の間違いでしょ。 わたしもポカを。。。。。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

これは簡単なので私めが答えさせていただきます。 両方正解です。 ネット上にたくさん出回ってますので詳しい解説をしても仕方ないので ヒントだけ言います。それを検索してみるといいかもしれません。 String 不変 String インスタンス化 などで Googling するだけでもたぶんすごい量の情報が出てくるでしょう。 ちなみに私めは Name str = new Name("...."); は使ったことありません。 nnaka さんのやり方しか使いません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javascript、phpを学びたい。

    こんにちは、Javascriptとphpに興味を持ったので学んでみたいのですが おすすめの参考書はありますか? 手元には、やさしいwebアプリプログラミングー高橋麻奈 著があります。 phpについては、触ったことがありません。 将来的には、webアプリやアンドロイドアプリが作りたいと思っています。 現在は、java,Cを学んでいますがどちらも初心者レベルです。 学習方法としては、完全に独学です。

  • 初心者向けの「JAVASCRIPT」の本を紹介してください。

    以前、「やさしいJAVA 高橋 麻奈 (著)」を使い、無事、JAVAについてはある程度理解でき、今も、リファレンスとして活用しています。非常に良い本だと思っております。 このような感じで、プログラムの初心者にオススメの、JAVASCRIPTについて書かれた本があれば教えてください。 宜しくお願い致します。

  • 以下のコードのどこが問題なのでしょうか?

    java初心者です。よろしくお願いいたします。以下のコードはどこに問題があるのでしょうか?よろしくお願いいたします。 public class Sample2 { public static void main(String[] args1,String[] args2) { MyObject object = new MyObject(); object.setName("mikel" , "jun"); String s = object.getName(); System.out.println(s); } } class MyObject { String name; public void setName(String str1,String str2) { name = "str1"+"str2"; } public String getName() { return name; } }

    • ベストアンサー
    • Java
  • 文字列について(続き)

    文字列について、あれから私がベストアンサーに選んだ回答を元に下記のプログラムを作成したのですが私が作成したプログラムで出た結果が下記のようになります。実行例のような結果を出すにはどのようにすればいいのですか?Java初心者なのでお願いします。 作成したプログラムで出た結果 文字列を入力 My name is Taro Sandai. 整数を入力 10 My name is.iadnaS oraT 実行例 文字列を入力 My name is Taro Sandai. 整数を入力 10 My name isdnaS oraT ai. import java.io.*; class K2 { public static void main(String args[]) throws IOException { System.out.println("文字列を入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("整数を入力"); String str2 = br.readLine(); int num = Integer.parseInt(str2); String str3 = str1.substring(0,num); String str4 = str1.substring(num); StringBuffer str5 = new StringBuffer(str4); str5.reverse(); System.out.println(str3+str5); } }

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

    過去の質問をみて解決を試みましたが、ことごとくうまくいかないので質問させてください タイトル通りjava初心者です。専門用語など使わずに回答くださるとうれしいです まず自分のパソコン(windows7, 64bit)でjava, standard edition, JDKの64bit版をダウンロード&インストールしました インストールは正常に完了しました、と画面がでたのですが、ファイルを確認するとprogram files(x86)内ではなく、program filesにありました。何かのサイトで64ビット版をインストールするとprogram files(x86)のほうにインストールされると書いてあるのを読みましたが、これは正常でしょうか??? そしてpath環境を変更するとあったのでpathの末端に;C:\Java\jdk1.6.0_39\bin(インストールしたファイルの番号?がこれでした)をつけて変更したのですが、cmdでjavaと入力すればだーっと文字列が出るのですが、java-version, javac-versionと入力すると、内部コマンド及び外部コマンド、または操作可能なプログラム、またはバッチファイルとして認識できません、と表示されます。 ここから、どうしていいかさっぱりわかりません。 pathも何度か確認してみましたが、追加した部分に間違いはないように思います。ただ、pathのもともとあった文字列に(x86)という数字が含まれているのが気になります。 わかりにくくてすみません、、、 どうぞよろしくお願いします!!!

    • ベストアンサー
    • Java
  • renameについて

    ”ABCDEF”というフォルダに入っている3つのファイルの名前を それぞれ”01,02,03”にしたいとき下記のプログラムで大丈夫ですか? というか、完成していますか? 他にしなくてはいけない事や間違いがあったら教えて下さい。 #! c:/perl/bin/perl $abcdef = './ABCDEF/'; $newname = 01 02 03; foreach $abcdef (@NAME) { my $newname = $abcdef; rename($abcdef,$newname) or warn "Couldn't rename $abcdef to $newname: $!\n"; } パソコン初心者で困っています。実際に実行したくても ”ページが見つかりません”になって確認できないし・・・ インストールは正常に出来たはずなのに・・・ 何でですかね? あと、フォルダに入っているもっと多くのファイル名を変えるとき(1000個とか) にはどうしたらいいんですか? 宜しくお願い致します。

  • スレッドに関して(高橋麻奈の本)

    はじめまして。 現在、高橋麻奈の「やさしいJAVA」を読んで勉強している初心者です。 スレッドに関する記述(P.466)で分からない点があります。下記のコードを実行すると、  mainの処理をしています。  mainの処理をしています。  1号車の処理をしています。  mainの処理をしています。      ・ ・ の文字がアトランダムに並ぶとの事ですが、実行すると、  mainの処理をしています。  mainの処理をしています。  mainの処理をしています。  mainの処理をしています。  mainの処理をしています。  1号車の処理をしています。  1号車の処理をしています。  1号車の処理をしています。  1号車の処理をしています。  1号車の処理をしています。 と、アトランダムにならずに表示されてしまいますが、何故でしょうか?下記にコードを載せておきます。長くなって、申し訳有りません。 ---コード----------- class Car extends Thread { private String name; public Car(String nm) { name = nm; } public void run() { for(int i=0; i<5; i++){ System.out.println(name+"の処理をしています。"); } } } class Sample1 { public static void main(String args[]) { Car car1 = new Car("1号車"); car1.start(); for(int i=0; i<5; i++){ System.out.println("main()の処理をしています。"); } } }  

    • ベストアンサー
    • Java
  • 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
  • String型の変数を使った問題

    すごく簡単なプログラムのはずで、初歩的な質問で申し訳ありませんが、教えていただければと思います。 問題: 以下の場合の処理を行うプログラムを作成せよ。 (1)String型の変数を作成し、苗字を格納する。(値は直接書き込む) (2)String型の変数を作成し、名前を格納する。(値は直接書き込む) (3)(1)で作成した苗字を持つ変数と、(2)で作成した名前を持つ変数を結合して出力。 (4)「苗字は'((1)で作成した変数の値)'です。名前は'((2)で作成した変数の値)'です。」と出力。 出力結果: C:\>java Name いわたてつお 苗字は'いわた'です。名前は'てつお'です。 C:\> 上記のプログラムを作成しようとしたのですが・・・ import java.io.*; class Name { public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String name1 = str1; String str2 = br.readLine(); String name2 = str2; System.out.println(name1 + name2); System.out.println("苗字は\'" + name1 + "\'です。名前は\'" + name2 + "\'です。"); } } ↑これではいくら変数を2つ作成しても、書き込んだ文字が全て 苗字の変数に格納されてしまってちゃんと出力出来ないという事は 分かるのですが、どうやったらちゃんと苗字と名前に分かれて 出力されるのか分からないので、教えてください。 なんとなく文法的にも間違っている気が・・・ ホント初歩的な質問ですみません!

    • ベストアンサー
    • Java
  • メモリリーク(?)時にSQLException

    メモリリーク(?)時にSQLException 初めて質問させていただきます。 java+mysqlでWebアプリを作成しているのですが、DBからデータ取得後、取得結果をStringに格納するところで2回に1回だけエラーとなってしまいます。 具体的には下記のようなプログラム実行時にSQLExceptionが出てしまいます。 // ---- プログラム // ・・・(略)・・・ String str = ""; rs = pst.executeQuery(); while (rs.next())} str = str + rs.getString("name"); } // ---- 出力されるエラー(途中まで) java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910) at com.mysql.jdbc.ResultSet.checkClosed(ResultSet.java:644) at com.mysql.jdbc.ResultSet.next(ResultSet.java:6663) ResultSetがクローズされてるよというエラーだと思うのですが、 str = str + rs.getString("name"); のところを str = rs.getString("name"); に書き換えた場合と、String型ではなくStringBufferでappendを使って文字列連結させていった場合はエラーになりません。 また、ログを入れて動作状況を確認してみたところwhile文は何回かは動いているようです。 ※while文は5000回以上ループし、strは最終的にかなり大きいサイズになります。 このような状況を考えると、メモリリークが発生して落ちているのかと思うのですが、発生しているエラー内容は上記の通りSQLExceptionです。 また、一番腑に落ちないのはこのエラーが2回に1回だけ出る、ということです。 同じような現象をご存知の方がいらっしゃいましたら、何が起こっているのか教えていただけないでしょうか? 未熟ながら私の予想ですと、メモリリークが発生する前にjavaがGCでメモリクリアしようとしているんだけど、そのときにResultSetも一緒に消しちゃってる・・・? javaやjdbcのバグ???とも考えているのですが、どうやって確認したらいいのかわからず困っています。

    • ベストアンサー
    • Java