Javaでの漢字検索

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
レフェリア
記事: 33
登録日時: 12年前

Javaでの漢字検索

#1

投稿記事 by レフェリア » 12年前

Javaの掲示板が見つからなかったので質問させていただきます

Javaのフォームで入力された氏名か番号があらかじめ作成された配列内に同じ要素があるとき
番号・名前・点数を連結してテキストボックスに表示する
同じ要素が存在しないとき「ありません」をテキストボックスに表示する

という課題なのですが、入力された漢字での部分一致検索がなぜか失敗してしまいます。
どのような改善をするとよいのかアドバイスお願いします

コード:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class MainProgram extends JFrame implements ActionListener{

	public static void main(String[] args) {
		new MainProgram();
	}


	int[] namber = new int[]{1,2,3,4,5,6,7,8,9,10};
	String[] name = new String[]{"田中士郎","竹田雲雀","三木裕也","佐々木謙哉","岩田裕也","能登真美子","泉真一","佐川急便","阿賀美穂","加賀美優"};
	int[] point = new int[]{75,55,87,22,35,90,80,15,45,100};

	JTextField text = new JTextField();
	JTextField text2 = new JTextField();
	JButton button = new JButton("検索");
	JLabel ansLabel = new JLabel("検索結果");

	MainProgram() {
		getContentPane().setLayout(null);

		text.setBounds(50,50,300,40);
		getContentPane().add(text);

		button.setBounds(200, 100, 100, 50);
		button.addActionListener(this);
		getContentPane().add(button);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(500,500);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		String str = text.getText();
		String ans = " ";

		if( str.isEmpty() )
			text2.setText("入力されていません");
		else{

			for( int i = 0; i < name.length; i++ )
			{
				if( name[i].matches(".*" + str + "*.") || str.matches("" + namber[i]))
				{
					ans.concat(name[i] + " " + namber[i] + " " + point[i]);
					break;
				}
			}
			if( ans.equals(" ") )
				text2.setText("ありません");
			else
				text2.setText(ans);
		}

		ansLabel.setBounds(50,1500,200,50);
		getContentPane().add(ansLabel);
		text2.setBounds(50,250,300,40);
		getContentPane().add(text2);
	}
}

レフェリア
記事: 33
登録日時: 12年前

Re: Javaでの漢字検索

#2

投稿記事 by レフェリア » 12年前

事故解決しました

41行目のactionPerformedメソッド内のmatches()をindexOf()に変更し、
concat()メソッドを使用せず代入という形に修正するとちゃんと出力できました。

閉鎖

“C言語何でも質問掲示板” へ戻る