質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

320閲覧

サンプルのコードを実践しても、本に書いてある通りにならない。

hood

総合スコア351

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2018/09/11 03:18

###サンプルのコードを実践しても、本に書いてある通りにならない。

私は「Java言語で学ぶデザインパターン入門 結城浩 著」でjavaを勉強しています。
しかし、builderパターンのところでこけてしました。
サンプルコードをEclipseにコピペして、指示通り、htmlを引数に、実行したのですが、画像のtype Greeting.htmlのところより下が、コンソールに表示されないのです。
イメージ説明

これはどういうことでしょうか?
ちなみにplainを引数にした場合、本の通りになりました・・・

下にサンプルコードを記します。

lang

1public abstract class Builder { 2 public abstract void makeTitle(String title); 3 public abstract void makeString(String str); 4 public abstract void makeItems(String[] items); 5 public abstract void close(); 6}

lang

1 2public class Director { 3 private Builder builder; 4 public Director(Builder builder) { // Builderのサブクラスのインスタンスが与えられるので、 5 this.builder = builder; // builderフィールドに保持しておく。 6 } 7 public void construct() { // 文書構築 8 builder.makeTitle("Greeting"); // タイトル 9 builder.makeString("朝から昼にかけて"); // 文字列 10 builder.makeItems(new String[]{ // 箇条書き 11 "おはようございます。", 12 "こんにちは。", 13 }); 14 builder.makeString("夜に"); // 別の文字列 15 builder.makeItems(new String[]{ // 別の箇条書き 16 "こんばんは。", 17 "おやすみなさい。", 18 "さようなら。", 19 }); 20 builder.close(); // 文書を完成させる 21 } 22} 23

lang

1import java.io.*; 2 3public class HTMLBuilder extends Builder { 4 private String filename; // 作成するファイル名 5 private PrintWriter writer; // ファイルに書き込むPrintWriter 6 public void makeTitle(String title) { // HTMLファイルでのタイトル 7 filename = title + ".html"; // タイトルを元にファイル名決定 8 try { 9 writer = new PrintWriter(new FileWriter(filename)); // PrintWriterを作る 10 } catch (IOException e) { 11 e.printStackTrace(); 12 } 13 writer.println("<html><head><title>" + title + "</title></head><body>"); // タイトルを出力 14 writer.println("<h1>" + title + "</h1>"); 15 } 16 public void makeString(String str) { // HTMLファイルでの文字列 17 writer.println("<p>" + str + "</p>"); // <p>タグで出力 18 } 19 public void makeItems(String[] items) { // HTMLファイルでの箇条書き 20 writer.println("<ul>"); // <ul>と<li>で出力 21 for (int i = 0; i < items.length; i++) { 22 writer.println("<li>" + items[i] + "</li>"); 23 } 24 writer.println("</ul>"); 25 } 26 public void close() { // 文書の完成 27 writer.println("</body></html>"); // タグを閉じる 28 writer.close(); // ファイルをクローズ 29 } 30 public String getResult() { // 完成した文書 31 return filename; // ファイル名を返す 32 } 33} 34 35

lang

1 2public class TextBuilder extends Builder { 3 private StringBuffer buffer = new StringBuffer(); // このフィールドに文書を構築していく 4 public void makeTitle(String title) { // プレーンテキストでのタイトル 5 buffer.append("==============================\n"); // 飾り線 6 buffer.append("『" + title + "』\n"); // 『』つきのタイトル 7 buffer.append("\n"); // 空行 8 } 9 public void makeString(String str) { // プレーンテキストでの文字列 10 buffer.append('■' + str + "\n"); // ■つきの文字列 11 buffer.append("\n"); // 空行 12 } 13 public void makeItems(String[] items) { // プレーンテキストでの箇条書き 14 for (int i = 0; i < items.length; i++) { 15 buffer.append(" ・" + items[i] + "\n"); // ・つきの項目 16 } 17 buffer.append("\n"); // 空行 18 } 19 public void close() { // 文書の完成 20 buffer.append("==============================\n"); // 飾り線 21 } 22 public String getResult() { // 完成した文書 23 return buffer.toString(); // StringBufferをStringに変換 24 } 25} 26

lang

1 2public class Main { 3 public static void main(String[] args) { 4 if (args.length != 1) { 5 usage(); 6 System.exit(0); 7 } 8 if (args[0].equals("plain")) { 9 TextBuilder textbuilder = new TextBuilder(); 10 Director director = new Director(textbuilder); 11 director.construct(); 12 String result = textbuilder.getResult(); 13 System.out.println(result); 14 } else if (args[0].equals("html")) { 15 HTMLBuilder htmlbuilder = new HTMLBuilder(); 16 Director director = new Director(htmlbuilder); 17 director.construct(); 18 String filename = htmlbuilder.getResult(); 19 System.out.println(filename + "が作成されました。"); 20 } else { 21 usage(); 22 System.exit(0); 23 } 24 } 25 public static void usage() { 26 System.out.println("Usage: java Main plain プレーンテキストで文書作成"); 27 System.out.println("Usage: java Main html HTMLファイルで文書作成"); 28 } 29} 30

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Greeting.htmlというファイルができているはずですので、中身を見てみてください。
なお、typeはWindowsにおいては『ファイルの中身を出力せよ』という命令です。

投稿2018/09/11 03:24

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hood

2018/09/11 03:50

コマンドラインでやったら、確認できました! エクスプローラで見ると、ワークスペースにファイルができていたようですね.... とにかく、回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問