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

サイト内の関連ページ

関連情報

Java 25(Temurin 25 JDK) のインストール

Eclipse Temurin(Adoptium)のインストールを行い、Javaのプログラムをコンパイル・実行する環境を整える。扱う環境は、Windows搭載パソコンである。現時点(2026年6月)での最新LTS版である Java 25(Temurin 25 JDK)を推奨する。

[Windows での Java 25(Temurin 25 JDK) のインストール手順を見るには、ここをクリック]

Windows での Java 25(Temurin 25 JDK) のインストール

以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。

方法 1:winget によるインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。

Temurin の Windows インストーラー(.msi)は、ユーザー単位ではなくマシン単位でインストールされる(1台に1つのインストール)。そのため、システム全体(全ユーザー向け)にインストールするには管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動するとPATHが反映される。

REM Java 25(Temurin 25 JDK) をインストール(PATH と JAVA_HOME を更新)
winget install --id EclipseAdoptium.Temurin.25.JDK -e --silent --accept-source-agreements --accept-package-agreements --override "ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR=\"C:\Program Files\Eclipse Adoptium\jdk-25\" /quiet"

上記の --override 内の指定の意味は次のとおりである。FeatureEnvironment はPATH環境変数の更新、FeatureJavaHomeJAVA_HOME 環境変数の更新、FeatureJarFileRunWith は .jar ファイルとJavaアプリケーションの関連付けである。INSTALLDIR はインストール先フォルダの指定である。

方法 2:インストーラーによるインストール

  1. Adoptium公式サイト(https://adoptium.net/temurin/releases/)にアクセスし、Version として「25 - LTS」、Operating System として「Windows」を選び、.msi 形式のWindows用インストーラーをダウンロードする。
  2. ダウンロードした .msi ファイルを実行し、インストールプログラムを起動する。
  3. ライセンス条項を確認し、同意できる場合はチェックを入れて次へ進む。
  4. 「Installation Scope」画面では「Install for all users of this machine」を選ぶ
  5. 「Custom Setup(カスタムセットアップ)」画面で、インストールする機能を選択する。既定では「Add to PATH(PATH環境変数への追加)」と「Associate .jar」(.jarファイルの関連付け)が有効になっている。さらに、ツリー内でバツ印(×)が付いている「Set JAVA_HOME variable(JAVA_HOME環境変数の更新)」をクリックして有効に変更することを推奨する。これらを有効にしないと、コマンドプロンプトから java コマンドを実行できなかったり、開発ツールがJDKを見つけられなかったりする。
  6. 「次へ (Next)」をクリックし、続いて「インストール (Install)」をクリックしてインストールを開始する。完了後「Finish」で閉じる。

インストールの確認

コマンドプロンプトで以下を実行する。

java --version

バージョン番号(例:openjdk 25.x.x)が表示されればインストール成功である。「'java' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していないか、PATHが反映されていない(コマンドプロンプトを再起動して再度確認する)。

あわせて、コンパイラと JAVA_HOME も確認しておくとよい。

javac --version
echo %JAVA_HOME%

Eclipse のインストール

Eclipse をインストールする。扱う環境は、Windows搭載パソコンである。

[Windows での Eclipse のインストール手順を見るには、ここをクリック]

Windows での Eclipse のインストール

以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。

方法 1:winget によるインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして,コマンド全体をコマンドプロンプトにコピー&ペーストする。

REM Temurin 25 JDK をインストール
winget install --id EclipseAdoptium.Temurin.25.JDK -e --accept-source-agreements --accept-package-agreements

winget が使えない場合や,インストール先・パッケージ種類を画面で選びながら導入したい場合は,次の方法を用いる。

方法 2:インストーラーによるインストール

公式サイトからダウンロードしてインストールできる。詳しくはhttps://www.kkaneko.jp/tools/win/eclipse.htmlで説明している。

Eclipse の初期設定、使用方法の基本

詳しくはhttps://www.kkaneko.jp/tools/win/eclipse.htmlで説明している。

文字列比較プログラム

プログラムの内容

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

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

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

コンソール画面においてキーボードからの入力を読み取り、 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