金子邦彦研究室プログラミングJava のプログラム例文字列処理(文字列の比較,大文字小文字を区別しない比較,トークンの切り出し)(Java を使用)

文字列処理(文字列の比較,大文字小文字を区別しない比較,トークンの切り出し)(Java を使用)

【サイト内の Java 関連の資料】

文字列比較プログラム

プログラムの内容

2つの文字列を入力して、文字列比較を行う。 同じであればtrue、違っていればfalseを返す。

import java.io.*;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) throws IOException {
        BufferedReader br =
              new BufferedReader(new InputStreamReader(System.in));

        System.out.println("文字列A");
        String strA = br.readLine();
        System.out.println("文字列B");
        String strB = br.readLine();
        if (strA.equals(strB)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
}

【Windows での実行】

Windows で,ファイル Main.java を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.

cd %LOCALAPPDATA%
notepad Main.java
javac -encoding UTF-8 Main.java
java Main

[image]

StringBufferに入力したデータを溜め込み出力するプログラム

input "データ"と打ち込むことでデータをStringBufferに入力し、outputと打 ちこむことでこれまでに入れた全データを画面に出力する。deleteと打ち込むと 入力したデータを全て削除する。helpと打ち込むとコマンドリストが画面に出力 され、quitと打ち込むと終了する。

プロジェクトを作成

以下の3つのjavaファイルを作成.

javaファイル名: HelloWorld.java, command_line.java, test.java test.javaをクリックし, 実行→実行→JUnitテスト(もしくは Alt+Shift+X を 押した後 T を押す)

Main.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        try{
            String text;
            StringBuffer sb = new StringBuffer();
            BufferedReader buf =
                new BufferedReader(new InputStreamReader(System.in));
            System.out.println("入力してください:(ヘルプ:help) ");
            command_line cl = new command_line();
            while(true){
                System.out.print("> ");
                text=buf.readLine();
                if(cl.return_value(text,sb)==0)break;
            }
        }    
        catch(IOException e) {
            System.out.println("IO Error");
            System.exit(1);
        }
    }
}

command_line.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class command_line {
    public int return_value(String text, StringBuffer sb){

            String command, value;
            StringTokenizer st;

            if(text.equals(""))return -1;
            st = new StringTokenizer(text, " ");
            command = st.nextToken();
            if(command.compareTo("quit")==0)return 0;
            else if(command.compareTo("help")==0){
                System.out.println("コマンド一覧 ");
                System.out.println(" ヘルプ     :help");
                System.out.println(" 終了      :quit");
                System.out.println(" データ入力   :input \"データ\" ");
                System.out.println(" 全データ出力 :output");
                System.out.println(" 全データ削除 :delete");
                return 1;
            }
            else if(command.compareTo("input")==0){
                if(st.hasMoreTokens()==true){
                    value = st.nextToken();
                    sb.append(value+'\n');
                }
                return 2;
            }
            else if(command.compareTo("output")==0){
                System.out.print(sb);return 3;}
            else if(command.compareTo("delete")==0){
                sb.delete(0, sb.length());return 4;}

        return -1;
    }
}

test.java (単体テスト用)

import junit.framework.TestCase;

public class test extends TestCase {
    public void test_no_input() {
        StringBuffer sb = new StringBuffer();
        command_line cl = new command_line();
        assertTrue(cl.return_value("",sb)==-1);
    }
    public void test_quit() {
        StringBuffer sb = new StringBuffer();
        command_line cl = new command_line();
        assertTrue(cl.return_value("quit",sb)==0);
    }
    public void test_help() {
        StringBuffer sb = new StringBuffer();
        command_line cl = new command_line();
        assertTrue(cl.return_value("help",sb)==1);
    }
    public void test_inout() {
        StringBuffer sb = new StringBuffer();
        command_line cl = new command_line();
        assertTrue(cl.return_value("input asdf",sb)==2);
        assertTrue(cl.return_value("output",sb)==3);
        assertTrue(sb.toString().equalsIgnoreCase("asdf\n"));
    }
    public void test_delete() {
        StringBuffer sb = new StringBuffer();
        command_line cl = new command_line();
        assertTrue(cl.return_value("delete",sb)==4);
    }
}

【Windows での実行】

Windows で,ファイル Main.java, command_line.java, test.java を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.

cd %LOCALAPPDATA%
notepad Main.java
notepad command_line.java
notepad test.java
javac -encoding UTF-8 Main.java
javac -encoding UTF-8 command_line.java
javac -encoding UTF-8 test.java
java Main

[image]

キーボードからの入力を読み取り、出力する。

コンソール画面においてキーボードからの入力を読み取り、 StringBufferに蓄える。最終的に入力した結果を出力する。

ファイル:Main.java, MainTest.java

Main.java

JUnitによるテスト

MainTest.java

Main.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static String get_string() throws IOException {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in), 1);
        System.out.println("input string:");
        System.out.print(">");
        System.out.flush();
        String s = r.readLine();
        return s;
    }
    
    public static StringBuffer set_buffer() throws IOException {
        // TODO Auto-generated method stub
        StringBuffer buf = new StringBuffer();
        String str;
        System.out.println("roop (finish is \"\").");
        while(true){
            str = get_string();
            if(str.equalsIgnoreCase("")) break;
            //else buf.append("\t").append(str).append("\n");
            else{
                System.out.println("you input \"" + str + "\".");
                buf.append("\t" + str + "\n");
            }
        }
        System.out.println("finish input.");
        return buf;
    }
    
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        StringBuffer buf = set_buffer();
        if(buf.length() != 0){
            System.out.println("record:");
            System.out.print(buf);
        }
        else System.out.println("record:no string was input.");
        
        return;
    }
}

MainTest.java

import java.io.IOException;
import junit.framework.TestCase;

public class MainTest extends TestCase {

    public void testString() throws IOException {
        System.out.println("check get_string() :: input \"abc\".");
        String str = Main.get_string();
        assertNotNull(str);
        assertEquals(str, "abc");
        System.out.println("");
    };
    
    public void testStingBuffer() throws IOException {
        System.out.println("check set_buffer() :: input \"abc\" and \"def\".");
        StringBuffer str = Main.set_buffer();
        assertNotNull(str);
        assertEquals(str.toString(), "\t" + "abc" + "\n" + "\t" + "def" + "\n");
        System.out.println("");
    };
}

【Windows での実行】

Windows で,ファイル Main.java, MainTest を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.

cd %LOCALAPPDATA%
notepad Main.java
notepad MainTest.java
javac -encoding UTF-8 Main.java
java Main

[image]