goo blog サービス終了のお知らせ 

marunomaruno-memo

marunomaruno-memo

[Java] 昔作ったJavaの問題とサンプル解答

2014年01月20日 | Java
[Java]
昔作ったJavaの問題とサンプル解答
表示
http://blog.goo.ne.jp/marunomarunogoo/d/20100617

算術演算子
http://blog.goo.ne.jp/marunomarunogoo/d/20100618

変数
http://blog.goo.ne.jp/marunomarunogoo/d/20100622

分岐
http://blog.goo.ne.jp/marunomarunogoo/d/20100624

ループ
http://blog.goo.ne.jp/marunomarunogoo/d/20100628

配列(1)
http://blog.goo.ne.jp/marunomarunogoo/d/20100710

配列(2)
http://blog.goo.ne.jp/marunomarunogoo/d/20100711

2次元配列
http://blog.goo.ne.jp/marunomarunogoo/d/20100712

メソッド(1)
http://blog.goo.ne.jp/marunomarunogoo/d/20100714

メソッド(2)
http://blog.goo.ne.jp/marunomarunogoo/d/20100715


[Java] アナグラムを作る

2012年03月19日 | Java
[Java] アナグラムを作る
================================================================================

アナグラム (anagram) とは、言葉遊びのひとつ。単語または文の中の文字をいくつか入れ替えることによってまったく別の意味にさせる遊びである。
(ウィキペディア、http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%8A%E3%82%B0%E3%83%A9%E3%83%A0 より)

ただ、今回のプログラムは、意味はなく、文字を入れ替えるだけである。
ただし、つぎの点には気をつけた。
・同じ文字列にならない
・単語の先頭に行頭禁則和字が来ない

行頭禁則和字は以下の文字とする。
    ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎ


実際に必要なメソッドは、つぎの 2 つ。

public static String anagram(String s)        文字列のアナグラムを作る。
private static boolean isIllegalCharacters(List<Character> list) 
                                              不正な文字列かどうか判断する。 

これとは別に、単なる配列検索のユーティリティとして、つぎのメソッドを用意した。

private static int search(char[] a, char key) 配列から値を検索する。


□ Anagram.java
---
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Anagram {

    public static void main(String[] args) {

        System.out.println(anagram(""));
        System.out.println(anagram("ア"));
        System.out.println(anagram("アイスクリーム"));
        System.out.println(anagram("ドック"));
        System.out.println(anagram("キャット"));
    }

    /**
     * 文字列のアナグラムを作る。
     * ただし、アナグラムを作れないような文字数のときは、その文字列をそのまま返す。
     * 
     * @param s
     *            文字列
     * @return s のアナグラム
     */
    public static String anagram(String s) {
        if (s.length() < 2) {
            return s;
        }
        
        List<Character> list = new ArrayList<Character>();
        for (char c : s.toCharArray()) {
            list.add(c);
        }

        char[] cs;
        
        do {    // 同じ文字列でないようにする
            do {    // 不正な文字列でないようにする
                Collections.shuffle(list);
            } while (isIllegalCharacters(list));
            
            cs = new char[list.size()];
            for (int i = 0; i < cs.length; i++) {
                cs[i] = list.get(i);
            }
            
        } while (String.valueOf(cs).equals(s));
        
        return String.valueOf(cs);
    }

    /**
     * 不正な文字列かどうか判断する。 
     * ここでは、行頭禁則文字があると、不正な文字列とする。
     * 行頭禁則和字は以下の文字
     *     ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎ
     * @param list
     *            文字列を表すリスト
     * @return 不正な文字列であれば、true
     */
    private static boolean isIllegalCharacters(List<Character> list) {
        final char[] START_LINE_ILLEGAL_CHARACTERS = { 
            'ヽ', 'ヾ', 'ー', 
            'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ヮ', 'ヵ', 'ヶ', 
            'ぁ', 'ぃ', 'ぅ', 'ぇ', 'ぉ', 'っ', 'ゃ', 'ゅ', 'ょ', 'ゎ',
        };

        return search(START_LINE_ILLEGAL_CHARACTERS, list.get(0)) != -1;
    }

    /**
     * 指定された char 値の配列から指定された値を検索する。
     * @param a 検索される配列
     * @param key 検索される値
     * @return 配列に検索キーがある場合は検索キーのインデックス。 検索キーがリストにない場合は -1.
     */
    private static int search(char[] a, char key) {
        for (int i = 0; i < a.length; i++) {
            if (a[i] == key) {
                return i;
            }
        }

        return -1;
    }

}
---

□ 実行結果例
---
リアイクースム
ドクッ
キットャ
---
                                                                            以上


[Java] スッキリわかるJava入門

2012年03月06日 | Java
スッキリわかるJava入門
中山 清喬 (著), 国本 大悟 (著)
http://www.impressjapan.jp/support/aftercare/3086

¥2,730(本体 ¥2,600+税)
単行本(ソフトカバー): 640ページ
出版社: インプレスジャパン (2011/10/7)
言語 日本語
ISBN-10: 4844330861
ISBN-13: 978-4844330868
発売日: 2011/10/7
商品の寸法: 20.8 x 15 x 4.2 cm

第1章 Javaをはじめよう
ようこそJavaの世界へ
Java開発の基礎知識
Javaプログラムの基本構造

第2章 式と演算子
演算子、型の変換
命令実行の文

第3章 条件分岐と繰り返し
条件式の書き方、分岐構文のバリエーション
繰り返し構文のバリエーション

第4章 配列
配列の書き方
多次元の配列

第5章 メソッド
メソッドとは
引数と戻り値の利用
オーバーロード

付録A JDKのインストール

第6章 複数クラスを用いた開発
複数クラスで構成されるプログラム
パッケージに属したクラスの実行方法

第7章 オブジェクト指向をはじめよう
オブジェクト指向を学ぶ理由
オブジェクト指向の全体像と本質

第8章 インスタンスとクラス
クラス定義による効果
インスタンスの利用方法

第9章 さまざまなクラス機構
クラス型と参照
コンストラクタ
静的メンバ

第10章 カプセル化
カプセル化の目的とメリット

第11章 継承
継承の基礎
継承とコンストラクタ

第12章 高度な継承
抽象クラス
インタフェース

第13章 多態性
多態性とは
多態性のメリット

第14章 Javaを支える標準クラス

第15章 例外
エラーの種類と対応策

第16章 まだまだ広がるJavaの世界

付録B エラー解決・虎の巻

付録C JDKバージョンによる違い

Eclipseで学ぶはじめてのJava 第2版(DVD付)

2012年03月04日 | Java
Eclipseで学ぶはじめてのJava 第2版(DVD付) [大型本]
木村 聡 (著)
http://www.sbcr.jp/products/4797359039.html

大型本: 472ページ
出版社: ソフトバンククリエイティブ; 第2版 (2010/4/30)
ISBN-10: 479735903X
ISBN-13: 978-4797359039
発売日: 2010/4/30
商品の寸法: 23 x 18.4 x 3 cm

SECTION 1 基礎編

第1章 プログラムについて
第2章 まずは、実行してみる
第3章 Eclipseを使う
第4章 いろいろ表示してみる

●SECTION 2 文法編

第5章 計算してみる
第6章 もし~だったら
第7章 まとまりを持ったデータを扱う
第8章 同じ処理を繰り返す
第9章 これまでのコードを改善する
第10章 クラスを利用する
第11章 コメントとコーディング規約

●SECTION 3 発展編

第12章 オブジェクト指向
第13章 クラスを拡張する
第14章 抽象クラス
第15章 インターフェース
第16章 クラスライブラリを使う
第17章 例外
第18章 アノテーション
第19章 テスト
第20章 デバッグ

付録A プログラミングの準備・セットアップ
付録B クイズの解答
付録C その他の情報

[Java] UTC 時間と SimpleDateFormat の不思議

2012年03月02日 | Java
[Java] UTC 時間と SimpleDateFormat の不思議
================================================================================

UTC 時間を表示するときに、SimpleDateFormat を使って表示すると、JST 時間で表示さ
れる。System.out.printf()で %tT とすると、ちゃん と UTC として表示される。なぜ?
オブジェクトは、ただしく UTC として作られている。

□ UTCSample.java
---
package jp.rutles.sample;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;

public class UTCSample {

    public static void main(String[] args) {
        SimpleDateFormat fmt =
                new SimpleDateFormat(
                    "yyyy 年 M 月 d 日 (E) HH:mm:ss");

        Calendar today = Calendar.getInstance();
        System.out.println(today);
        System.out.println(fmt.format(today.getTime()));
        System.out.printf("%1$tF %1$tT%n%n", today);

        TimeZone tz = TimeZone.getTimeZone("UTC");
        Calendar utc = Calendar.getInstance(tz);
        System.out.println(utc);
        System.out.println(fmt.format(utc.getTime()));
        System.out.printf("%1$tF %1$tT%n%n", utc);
    }

}
/* 実行結果
java.util.GregorianCalendar[time=1330561100890,areFieldsSet=true,areAllFieldsSet
=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=324000
00,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,
minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=2,WEEK_OF_YEAR=9,WEEK_OF_MONTH=1,
DAY_OF_MONTH=1,DAY_OF_YEAR=61,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=
9,HOUR_OF_DAY=9,MINUTE=18,SECOND=20,MILLISECOND=890,ZONE_OFFSET=32400000,DST_OFF
SET=0]
2012 年 3 月 1 日 (木) 09:18:20
2012-03-01 09:18:20

java.util.GregorianCalendar[time=1330561100906,areFieldsSet=true,areAllFieldsSet
=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=
0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInF
irstWeek=1,ERA=1,YEAR=2012,MONTH=2,WEEK_OF_YEAR=9,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,
DAY_OF_YEAR=61,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,
MINUTE=18,SECOND=20,MILLISECOND=906,ZONE_OFFSET=0,DST_OFFSET=0]
2012 年 3 月 1 日 (木) 09:18:20
2012-03-01 00:18:20
*/
---

                                                                            以上



[Java] 対称群と置換のユーティリティ

2012年01月06日 | Java
[Java] 対称群と置換のユーティリティ
================================================================================

15 ゲームの不可能性に関して、その 15 ゲームをあらわす置換の符号が 1 の場合は、
ゲームが解けるが、-1 の場合は解けない。

これについて、その符号を取り出してみるユーティリティを作った。
これだけではなく、関数としては、次のものがある。
---
static int[]   getPermutation(int size) 
               指定された要素数の置換を取得する。 

static boolean isPermutation(int[] permutation) 
               指定された配列が置換になっているかどうかを確認する。 

static int     sgn(int[] permutation) 
               指定された置換の符号を取得する。 
---

■ 参考 URL

15ゲームの不可能性の評価
http://www004.upp.so-net.ne.jp/s_honma/game15.htm

「対称群と15ゲーム」スライド
http://ocw.tsukuba.ac.jp/25a0-v-1-65705b66985e/65705b66727952258b1b7fa9i/300c5bfe79f07fa430681530fc30e0300d30b930e930a4-pdf30d530a130a430eb


■ ソース

コードの内容については、中のコメントを参考。とくに、ここでは補足しない。
また、今後(気が向けば)関数を追加していく。

□ SymmetricGroupUtil.java
---
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 対称群関係のユーティリティ。
 * 
 * @author marunomaruno
 * @version 1.0, 2012-01-06
 */
public class SymmetricGroupUtil {

    private SymmetricGroupUtil() {
        super();
    }

    /**
     * 指定された置換の符号を取得する。
     * 
     * @param permutation
     *            置換を意味する配列
     * @return 置換の符号
     */
    public static int sgn(int[] permutation) {
        System.out.printf("a=%s; [", Arrays.toString(permutation));

        // 置換群かどうかを確認する
        if (!isPermutation(permutation)) {
            throw new IllegalArgumentException(
                            "指定された配列は、置換群になっていません。");
        }

        // ゼロ相対の添字と合わせるので、値を1引いたものにする
        int[] sigma = new int[permutation.length];
        for (int i = 0; i < permutation.length; i++) {
            sigma[i] = permutation[i] - 1;
        }

        // 転倒数を数える
        int count = 0;
        for (int i = 0; i < sigma.length; i++) {
            // すでに循環置換として抽出したものは除く
            if (sigma[i] < 0) {
                continue;
            }

            // 巡回置換の(長さ-1)を加える
            count += (length(sigma, i) - 1);
        }

        System.out.printf("]; count=%d%n", count);

        return (count % 2 == 0) ? 1 : -1; // 本来は、(int) Math.pow(-1, count);

    }

    /**
     * 指定された置換の、指定された添字からの巡回置換の長さを取得する。 
     * なお、引数の置換は、中身が変更される可能性がある。
     * 
     * @param permutation
     *            置換
     * @param from
     *            添字
     * @return 指定された置換の、指定された添字からの巡回置換の長さ
     */
    private static int length(int[] permutation, int from) {
        int length = 0;
        System.out.print(String.format("[%d", permutation[from] + 1));
        int i = permutation[from];
        while (permutation[from] >= 0 && i != from) {
            System.out.print(String.format(", %d", permutation[i] + 1));
            length++;

            // つぎの循環置換の添字を取得し、循環置換に採用した要素を消す
            int k = i;
            i = permutation[i];
            permutation[k] = -1; // 要素を消す
        }

        length++;
        System.out.printf("](%d), ", length);
        return length;
    }

    /**
     * 指定された配列が置換になっているかどうかを確認する。
     *  この置換は、次の条件を満たしている配列。 
     *  ・要素数 n が 1 以上 
     *  ・値は 1 ~ n までのそれぞれがひとつずつ入っている
     * 
     * @param permutation
     *            置換の配列
     * @return 置換になっていれば true
     */
    public static boolean isPermutation(int[] permutation) {
        // ひとつ以上の要素を持つ
        if (permutation.length < 1) {
            return false;
        }

        // 置換をコピーして、ソートする
        int[] sigma = Arrays.copyOf(permutation, permutation.length);
        Arrays.sort(sigma);

        // それぞれの添字がその要素値と違えば、置換にはなっていない
        for (int i = 0; i < sigma.length; i++) {
            if (sigma[i] != i + 1) {
                return false;
            }
        }

        return true;
    }

    /**
     * 指定された要素数の置換を取得する。
     * 
     * @param size
     *            要素数
     * @return 置換
     */
    public static int[] getPermutation(int size) {
        // ひとつ以上の要素を持つ
        if (size < 1) {
            throw new IllegalArgumentException(String.format(
                    "置換の要素数は1以上です。(%d)%n", size));
        }

        List<Integer> sigma = new ArrayList<Integer>(size);
        for (int i = 0; i < size; i++) {
            sigma.add(i + 1);
        }

        Collections.shuffle(sigma); // シャッフルする

        int[] permutation = new int[size];
        for (int i = 0; i < size; i++) {
            permutation[i] = sigma.get(i);
        }

        assert isPermutation(permutation); // 事後条件
        return permutation;

    }
}
---


■ JUnit のテストケース

□ SymmetricGroupUtilTest.java
---
import java.util.Arrays;

import junit.framework.TestCase;

public class SymmetricGroupUtilTest extends TestCase {

    public void testSgn() {
        assertEquals(1, SymmetricGroupUtil.sgn(new int[] { 1, }));
        assertEquals(1, SymmetricGroupUtil.sgn(new int[] { 1, 2, 3, }));
        assertEquals(1, SymmetricGroupUtil.sgn(new int[] { 2, 3, 1, }));
        assertEquals(1, SymmetricGroupUtil.sgn(new int[] { 3, 1, 2, }));
        assertEquals(-1, SymmetricGroupUtil.sgn(new int[] { 1, 3, 2, }));
        assertEquals(-1, SymmetricGroupUtil.sgn(new int[] { 2, 1, 3, }));
        assertEquals(-1, SymmetricGroupUtil.sgn(new int[] { 3, 2, 1, }));
        assertEquals(1, SymmetricGroupUtil.sgn(new int[] { 3, 7, 1, 2, 5, 8, 4,
                6, }));
        assertEquals(1, SymmetricGroupUtil.sgn(new int[] { 1, 2, 3, 4, 5, 6, 7,
                8, 9, 10, 11, 12, 13, 14, 15, }));
        assertEquals(-1, SymmetricGroupUtil.sgn(new int[] { 1, 2, 3, 4, 5, 6,
                7, 8, 9, 10, 11, 12, 13, 15, 14, }));
        assertEquals(-1, SymmetricGroupUtil.sgn(new int[] { 6, 12, 9, 2, 15, 1,
                14, 11, 13, 8, 3, 5, 4, 10, 7, }));

        try {
            assertEquals(1, SymmetricGroupUtil.sgn(new int[] {}));
            fail();
        } catch (IllegalArgumentException e) {
        }
    }

    public void testIsPermutation() {
        assertEquals(false, SymmetricGroupUtil.isPermutation(new int[] {}));
        assertEquals(true, SymmetricGroupUtil.isPermutation(new int[] { 1, }));
        assertEquals(true, SymmetricGroupUtil.isPermutation(new int[] { 1, 2,
                3, }));
        assertEquals(true, SymmetricGroupUtil.isPermutation(new int[] { 1, 3,
                2, }));
        assertEquals(true, SymmetricGroupUtil.isPermutation(new int[] { 3, 7,
                1, 2, 5, 8, 4, 6, }));
        assertEquals(true, SymmetricGroupUtil.isPermutation(new int[] { 1, 2,
                3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, }));
        assertEquals(true, SymmetricGroupUtil.isPermutation(new int[] { 1, 2,
                3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 14, }));

        assertEquals(false, SymmetricGroupUtil.isPermutation(new int[] { 0, }));
        assertEquals(false, SymmetricGroupUtil.isPermutation(new int[] { 2, }));
        assertEquals(false, SymmetricGroupUtil
                .isPermutation(new int[] { 1, 1, }));
        assertEquals(false, SymmetricGroupUtil
                .isPermutation(new int[] { 1, 3, }));

    }

    public void testGetPermutation() {
        assertEquals(true, SymmetricGroupUtil.isPermutation(SymmetricGroupUtil
                .getPermutation(1)));
        assertEquals(true, SymmetricGroupUtil.isPermutation(SymmetricGroupUtil
                .getPermutation(15)));
        System.out.println("---");
        System.out.println(Arrays.toString(SymmetricGroupUtil
                .getPermutation(15)));
        System.out.println(Arrays.toString(SymmetricGroupUtil
                .getPermutation(15)));
        System.out.println(Arrays.toString(SymmetricGroupUtil
                .getPermutation(15)));
        System.out.println(Arrays.toString(SymmetricGroupUtil
                .getPermutation(15)));

        try {
            assertEquals(true, SymmetricGroupUtil
                    .isPermutation(SymmetricGroupUtil.getPermutation(0)));
            fail();
        } catch (IllegalArgumentException e) {
        }

    }
}
---



JSP で表示するための一工夫 (2)

2009年11月18日 | Java
JSP で表示するための一工夫 (2)
================================================

■Map のデータを展開して表示

あるスコープに属性 mapdata がある。
キーが商品で、値がその個数とする。
これを、JSTL で展開する場合、つぎのように記述する。

---
<c:forEach var="item" items="${mapdata}" varStatus="status">
    <c:set var="product" value="${item.key}"/>      <!-- (1) -->
    <c:set var="quantity" value="${item.value}"/>   <!-- (2) -->
    <c:out value="${product.name}"/>
    <fmt:formatNumber value="${quantity}"/>
</c:forEach>
---


□(1), (2)

set タグを使って、key と value に対して名前を指定すると、
この後、EL を使いやすい。


以上



JSP で表示するための一工夫

2009年11月16日 | Java
JSP で表示するための一工夫
================================================

■自分自身の Web アプリケーションのパス

リンクの href 属性や、フォームの action 属性など
で URL を指定するときに、自分自身の Web アプリ
ケーションのパスを動的に取得します。

□使い方の例
---
  <form action="${pageContext.request.contextPath}/cart" method="post">
---


${pageContext.request.contextPath} は、
HttpServletRequest インターフェースの
getContextPath() メソッドで取得できるので、EL で
は、これを利用しています。


■クロスサイトスクリプティング対策

基本的には、表示するところで山括弧「<」「>」など
をエスケープします。これをサニタイジングといいま
す。
このための JSTL のタグとして、out タグがあります。

□使い方の例
---
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    :
  <c:out value="${product.name}"/>
---


単純に ${product.name} だけにすると、この name
の中に HTML のタグがあった場合、意図したとおりの
表示になりません。
out タグを使うことで、「<」「>」「&」「'」「"」
をそれぞれ「&lt;」「&gt;」「&amp;」「&apos;」
「&quot;」にエスケープします。


■数値をフォーマットして表示

数値 3桁区切りにしたり、通貨記号をつけて表示しま
す。

□使い方の例
---
  <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
      :
  <fmt:formatNumber value="${product.price}" 
                    type="currency" currencySymbol="" 
                    maxFractionDigits="0"/>
---


□表示結果 (price が 12345 のとき)
---
   12,345
---


この formatNumber タグは、JSTL のコアタグではな
く、国際化タグなので、コアタグの taglib ディレク
ティブとは別に、fmt タグに対する taglib ディレク
ティブを指定する必要があります。

□属性の補足

type "currency" を指定すると、通貨の形式(3桁
区切りで小数点以下第2位まで表示)

currencySymbol 通貨単位。「」を表示する場合は、
「」のようにエスケープする。

maxFractionDigits 小数点以下の最大の桁数。円の
ときは、小数点以下がないのが
普通なので、0 を指定しておく。


以上


JudeApi2Code 2.0 公開

2009年02月07日 | Java
JudeApi2Code 2.0 を公開

概要: Jude ファイルからから C++ / PHP のスケルトン・ソースを生成する
説明ページ: http://www.vector.co.jp/soft/other/java/se471297.html

---
■プログラム概要
Jude ファイルからから C++ / PHP のスケルトン・ソースを生成します。

JudeApi2Code は、指定されたJude プロジェクトのファイル (.jude) の中にある次の条件を満たさないクラスをすべて変換します。
・パッケージ名の最初が "java" や "javax" で始まるもの
・クラス名の一部に "*" や "&" が入っているもの
・アスタリスク(*)や、アンパーサンド(&)が入っているクラス
・テンプレート(山カッコ<>で囲まれた部分のクラス)
・プロパティ・ファイルに変換対象外として指定された型

ターゲット言語が C++ 特有のものとしては、ターゲット名や makefile のスケルトンを指定し、これにしたがって makefile も作ります。

PHP 特有のものとしては、 symfony で使うスキーマ定義ファイルの schema.yml も作ります。この対象になるクラスは、プロパティ・ファイルで指定されたステレオタイプ(デフォルトは table)のものです。
なお、スキーマ定義ファイル作成用のクラスも生成しますが、クラス名、プロパティ名は自動的にキャメルケースに変換します。ただし、クラス名については、タグつき値phpNameを指定すれば、その値となります。

使い方等の詳細については、ダウンロードした zip ファイルを解凍し、readme.txtを参照してください。

■動作環境
- JUDEバージョン
JUDE/Community または Professional 5.0 以降

- Javaバージョン
JUDE のシステム要件に基づくバージョンまたは JDK 5.0 以上の高い方

■備考
このプログラムの使用に際して、JUDEインストーラに含まれる「JUDE API サンプルプログラム使用許諾契約」に同意したものとみなされます。
---


半角英字の入力チェックとインプットメソッドの無効化

2008年07月21日 | Java
■ JavaScriptで、半角英字の入力チェックとインプットメソッドの無効化

---
<script type="text/javascript">
    /** 半角英文字チェック */
    function alphabetCheck() {
       var str = document.form.detail.value;
       if (str.match(/[^A-Za-z\s.-]+/)) {
          alert("半角英字のみで入力してください。");
          return 1;
       }
       return 0;
    }
</script>

...

<form name="form" action="..." method="post">
    <input type="text" name="detail" onblur="alphabetCheck();" style="ime-mode:disabled;"> 
    <input type="submit" value="送信" onClick="return alphabetCheck();">
</form>

---


□ onblur

テキストフォームからフォーカスが外れたときに、指定された関数
を実行する。


□ onClick

ボタンがクリックされたときに、指定された関数を実行する。


□ style="ime-mode:disabled;"

IE5.5(?)以降限定で、インプットメソッドを無効にする。

以上

満腹Java Javaアプリケーション開発編

2008年04月22日 | Java
満腹Java Javaアプリケーション開発編
http://www.ascii.co.jp/books/books/detail/978-4-04-870011-5.shtml

株式会社エイチピーティー 著
定価:3,150円 (本体3,000円)
発売日:2008/04/22
形態:B5変 (288ページ)
ISBN:978-4-04-870011-5

Chapter 1 Eclipseについて
1-1 Eclipseとは?
1-2 Eclipseをインストールしたい
1-3 Eclipseの使い方を教えて

Chapter 2 GUIプログラミングの基本
2-1 Swingとは?
2-2 フレームを使おう
2-3 ラベルとボタンとパネルを使おう
2-4 イベント処理とは?
2-5 イベントとイベントリスナーを使おう

Chapter 3 Swingアプリケーションの作成
3-1 なぜレイアウトマネージャを使うの?
3-2 テキストフィールドを使おう
3-3 チェックボックスとラジオボタンを使おう
3-4 コンポボックスを使おう
3-5 ダイアログボックスを表示しよう

Chapter 4 Visual Editor と SWT アプリケーションの作成
4-1 Visual Editor とは?
4-2 SWT を使ってみよう

Chapter 5 アプレットの作成
5-1 アプレットとは?
5-2 画像や図形を描画したい

Chapter 6 マルチスレッドプログラミング
6-1 マルチスレッド処理とは?
6-2 マルチスレッド処理の基本を教えて

Chapter 7 データベースの基本
7-1 データベースとは?
7-2 データベースを使ってみよう
7-3 SQL の基本を覚えよう

Chapter 8 JDBC によるデータベースプログラミング
8-1 JDBC とは?
8-2 JDBC を使ったプログラミングの手順を教えて
8-3 データベースにアクセスしてみよう

Chapter 9 ネットワークプログラミングの基本
9-1 ソケット通信の基本を教えて
9-2 Web サイトへの接続方法を教えて

Chapter 10 Java EE について
10-1 Java EE について教えて
10-2 Tomacat と WTP をインストールしよう

Chapter 11 サーブレットの基本
11-1 サーブレットとは?
11-2 サーブレットのライフサイクル
11-3 サーブレットを作ってみよう

Chapter 12 Web アプリケーションと配備記述子
12-1 Web アプリケーションの配備と構造
12-2 配備記述子とは

Chapter 13 JSP の基本
13-1 JSP とは?
13-2 暗黙オブジェクトとアクション

Chapter 14 JavaBeans の基本
14-1 JavaBeans とは?
14-2 サーブレットや JSP と JavaBeans の連携

直前対策! Sun認定Webコンポーネントディベロッパ(SJC-WC)

2007年07月01日 | Java
直前対策! Sun認定Webコンポーネントディベロッパ(SJC-WC)
http://pc.bookmall.co.jp/search/info.php?Code=0000001454253&PCID=18537e441a0023a86e5803da01723d03
著者 森本純子、野口庄一、八坂今日子、角健志、中野渡優 著
出版社 ローカス
ISBN 978-4-89814-809-9
発行日
2007年06月28日
価格 \2,625 (本体\2,500)
仕様 B6判356頁 二色刷
分類 情報処理試験(Java認定資格)

Javaの格言

2007年02月03日 | Java
Javaの格言―より良いオブジェクト設計のためのパターンと定石 (単行本)
ナイジェル ウォーレン (著), フィリップ ビショップ (著), Nigel Warren (原著), Philip Bishop (原著), 安藤 慶一 (翻訳)

http://www.amazon.co.jp/gp/product/toc/4894711877/ref=dp_toc/249-4655948-0289163?ie=UTF8&n=465392

単行本: 324ページ
出版社: ピアソンエデュケーション (2000/04)
ISBN-13: 978-4894711877
ASIN: 4894711877
サイズ (cm): 21 x 15

第1章 カプセル化
第2章 継承
第3章 ポリモルフィズム
第4章 型の安全性と定数
第5章 例外
第6章 コールバック
第7章 クラスのロードとオブジェクト生成
第8章 生成に関するイディオム
第9章 パフォーマンスとリソースとのバランス
第10章 コレクション
第11章 イテレータ
付録A 図ならびにコーディング規約について
付録B 規則・設計原則・ヒント一覧
付録C 重要用語集
付録D 参考文献