Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidアプリでEditTextに入力された値がアナグラムかどうかを判定する方法

このチュートリアルでは、Androidアプリにおいて、ユーザーが入力した2つのEditTextの値がアナグラム(同じ文字を並べ替えて作られた別の単語)であるかどうかを判定する方法を解説します。

手順1:新規プロジェクトを作成する

まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」⇒「New Project」を選択し、必要な情報をすべて入力してプロジェクトを作成してください。言語はJavaを選択します。

手順2:レイアウトファイル(activity_main.xml)にコードを追加する

次に、res/layout/activity_main.xml に以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">
    <EditText
        android:id="@+id/edit_query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/edit_query1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/buttonPanel"
        android:text="Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></Button>
</LinearLayout>

上記のコードでは、ユーザーがデータを入力できるように2つのEditTextを配置しています。ボタンがクリックされると、判定結果がToastとして画面に表示される仕組みです。

手順3:MainActivity.javaにコードを追加する

続いて、src/MainActivity.java に以下のコードを追加します。

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    EditText edit_query1,edit_query;
    String first,second;
    int found = 0, not_found = 0;
    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edit_query1=findViewById(R.id.edit_query1);
        edit_query=findViewById(R.id.edit_query);
        findViewById(R.id.buttonPanel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!edit_query.getText().toString().isEmpty() && !edit_query1.getText().toString().isEmpty()) {
                    first = edit_query.getText().toString().trim();
                    second = edit_query1.getText().toString().trim();
                }
                char[] firstchar=first.toCharArray();
                char[] secondchar=second.toCharArray();
                for(int i = 0;i<firstchar.length;i++) {
                    found = 0;
                    for(int j = 0;j<secondchar.length;j++){
                        if(firstchar[i] == secondchar[j]) {
                            found = 1;
                            break;
                        }
                    }
                    if(found == 0) {
                        not_found = 1;
                        break;
                    }
                }
                if(not_found == 1) {
                    Toast.makeText(MainActivity.this,"it is not anagaram",Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(MainActivity.this,"it is anagaram",Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

コードの仕組みについて

このコードでは、ボタンがクリックされると以下の処理が行われます。

・両方のEditTextが空でないことを確認し、入力値の前後の空白を削除(trim)します。
・各文字列をchar型の配列に変換します。
・1つ目の文字列の各文字が、2つ目の文字列の中に存在するかどうかを二重ループでチェックします。
・すべての文字が見つかれば「it is anagaram」(アナグラムです)、1つでも見つからなければ「it is not anagaram」(アナグラムではありません)という結果をToastで表示します。

より厳密なアナグラム判定が必要な場合は、文字の出現回数も比較することをおすすめします。例えば「listen」と「silent」はアナグラムですが、単純な包含チェックだけでは文字数の違いを見逃す可能性があります。Arrays.sort()を使って両方の文字配列をソートし、equals()で比較する方法もシンプルで確実な実装手段の一つです。

アプリを実行してみよう

それでは、アプリケーションを実行してみましょう。実際のAndroidスマートフォンをパソコンに接続していることを前提とします。Android Studioからアプリを実行するには、プロジェクトのアクティビティファイルのいずれかを開き、ツールバーの実行(Run)アイコンをクリックします。表示された選択肢からお使いのモバイルデバイスを選択すると、実機の画面にデフォルトの画面が表示されます。

AndroidアプリでEditTextに入力された値がアナグラムかどうかを判定する方法

  1. 【Android】TextViewでテキストを両端揃え(ジャスティファイ)表示する方法

    概要 本記事では、AndroidアプリのTextViewに表示するテキストを両端揃え(ジャスティファイ)にする方法を、サンプルコードとともにわかりやすく解説します。 TextViewで両端揃えを実現するには、android:justificationMode=inter_wordを指定するだけです。この機能はAndroid 8.0(APIレベル26)以降で有効になるため、それ以前のOSバージョンでは無視される点に注意してください。 手順1:新規プロジェクトを作成する まず、Android Studioを起動し、メニューから「File」⇒「New Project」を選択します。必要な項目をす

  2. 【Android】SharedPreferencesで値を保存・読み取り・編集する方法を徹底解説

    SharedPreferencesとは? SharedPreferencesは、Androidアプリでキーと値(Key-Value)のペア形式の小さなデータを永続的に保存するための仕組みです。ユーザー名やメールアドレスなどの設定情報、ログイン状態、前回起動時の状態など、SQLiteデータベースを用意するまでもない軽量なデータの保存に最適で、多くのアプリで広く利用されています。 本記事では、実際に動作するサンプルコードをもとに、SharedPreferencesで値を「保存」「読み取り」「編集(クリア)」する方法をステップごとに解説します。 ステップ1:新規プロジェクトを作成する Android