Print Friendly, PDF & Email

以下の問題は穴埋め問題です。
IDEなどにコピーしてかまいません。

1.文字数判定

俳句の文字数がルールに沿っているかどうか(17文字か?)を判定するプログラムである。

プログラムを完成させなさい。

package p07;

public class Q01 {

    public static void main(String args[]) {
        int stringLength;
        String s = "さみだれをあつめてはやしもがみがわ";
        
        stringLength = //ここに答えを書く;

        if (stringLength > 17) {
            System.out.println("字余りです。");
        } else if (stringLength < 17) {
            System.out.println("字足らずです");
        } else {
            System.out.println("ちょうど17文字です。");
        }
    }
}

 

2.パスワードの一致

ユーザーが入力したパスワードが正しいパスワード「abc」と同一かどうかの判定をするプログラムである。

しかし、このプログラムにはバグがある。

正しく、"abc"というパスワードを入れてもログインできないのである。

間違いを正しなさい。

package p07;

import java.util.Scanner;

public class Q02 {

    public static void main(String[] args) {
        String password = "abc";
        String passwordIn;

        System.out.print("パスワード?:");

        Scanner sc = new Scanner(System.in);

        passwordIn = sc.next();
        sc.close();

        if (password == passwordIn) {
            System.out.println("ログインしました。");
        } else {
            System.out.println("パスワードが違います。");
        }
    }
}

 

3.エスケープシーケンス

次の文章をコンソールに表示しなさい。
 
彼は言った。「\3,000円のお買い上げです」
私は"あなた"に言っているのです。
私は'あなた'に言っているのです。

 

4.人工無能

次のプログラムは人工無能と英会話するゲームのプロトタイプである。

このゲームは、ユーザーがキーボード入力した英単語xxxに対して、コンピューターが「本当にxxxですね」と返事をする。

ユーザーがキーボード入力を繰り返す限り返事を繰り返す。

現在は、何も文字列を入力しなかった時に終了するようになっているので、「END」が入力された時に終了するようにしなさい。

なお、「END」、「End」、「end」のように大文字小文字を問わず終了すること。

※大文字小文字を問わない文字列比較の方法は標準APIやインターネット検索で調べてください。

package p07;

import java.util.Scanner;

public class Q03 {

    public static void main(String args[]) {
        String s = "START";
        Scanner sc = new Scanner(System.in);
        while (!s.isEmpty()) {
            System.out.print("お話ししましょう。 ("END"と入力されると終了します。):");
            s = sc.nextLine();
            if (!s.isEmpty()) {
                System.out.println("本当に " + s + "ですね。");
            }
        }
        System.out.println("楽しかったです。 また、会いましょう!");
        sc.close();
    }
}

 

5.文字列の順序

ユーザーが入力した2つの英単語のアルファベット順(辞書順の前後関係)を判定するプログラムである。
 
例えば、"apple"は"melon"より前の単語である。
 
プログラムを完成させなさい。
 
※文字列の順序を比較する方法は標準APIやインターネット検索で調べてください。
 
package p07;

import java.util.Scanner;

public class Q04 {

    public static void main(String args[]) {
        String str1, str2;

        System.out.print("Input a English keyword:");
        Scanner sc = new Scanner(System.in);
        str1 = sc.next();
        System.out.print("Input another keyword:");
        str2 = sc.next();

        int comp = //ここにコードを書く

        if (comp < 0) {
            System.out.println(str1 + " という単語は次の単語 " + str2+ "の前の単語です。");
        } else if (comp > 0) {
            System.out.println(str1 + " という単語は次の単語 " + str2+ "の後の単語です。");
        } else {
            System.out.println("2つの単語は同じです。");
        }
    }
}

<結果の例>

Input a English keyword:apple
Input another keyword:melon
apple is the word before melon

 

6.メールアドレスの加工

メールアドレスからユーザー名とドメイン名を抽出したい。

以下のプログラムを完成させよ。

※この問題も標準APIやインターネット検索で調べてください。

package p07;

public class Q05 {

    public static void main(String[] args) {

        String email = "katsuya_imai●saycon.co.jp";
       
        //ここにコードを書く

    }
}

※コンプライアンスの関係でメールアドレスを書けないため@を●で代替しています。

<結果>

katsuya_imai
saycon.co.jp
どんなメールアドレスでも動作するか確認すること。
 
 

7.CSVの加工

カンマ区切りの文字列(CSV)をタブ区切り文字列(TSV)に変えたい。

以下のプログラムを完成させよ。

※この問題も標準APIやインターネット検索で調べてください。

package p07;

public class Q07 {

    public static void main(String[] args) {

        String csv = "1,111-1111,愛知県名古屋市,山田太郎,090-999-99XX";
        String tsv = null;

         //ここにコードを書く

        System.out.println(csv);
        System.out.println(tsv);
    }
}

<結果>

1,111-1111,愛知県名古屋市,山田太郎,090-999-99XX
1 111-1111 愛知県名古屋市 山田太郎 090-999-99XX
 

8.StringBuilderクラスの意義

次のプログラムを実行して、その意味を考えなさい。

package p07;

public class Q08 {

    public static void main(String[] args) {
        final int COUNT = 10_000;

        String st = null;
        long startTime = System.currentTimeMillis();

        for (int i = 0; i < COUNT; i++) {
            String str = Integer.toString(i);
            st += str;
        }
        long endTime = System.currentTimeMillis();
        long sTime = endTime - startTime;

        StringBuilder sb = new StringBuilder();

        startTime = System.currentTimeMillis();

        for (int j = 0; j < COUNT; j++) {
            sb.append(Integer.toString(j));
        }
        endTime = System.currentTimeMillis();
        long sbTime = endTime - startTime;

        System.out.println("Stringを使った文字列の結合:" + sTime + "ミリ秒");
        System.out.println("StringBuilderを使った文字列の結合 " + sbTime + "ミリ秒");
    }
}

※なお、SystemクラスのcurrentTimeMillis()メソッドは現在のシステム時刻をミリ秒の単位で返すメソッドです。
2時点間の時間の差分を取って経過時間を計測しています。

 

9.オリジナル問題作成

 
将来の後輩のために良い問題が出来たら教えてください。
 
以上。
 
 
 
 
JavaSEの問題集トップページに戻る