• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:java equalsメソッドについて)

java equalsメソッドについて

このQ&Aのポイント
  • java初心者ですがandroidを触ることになりました。不可解なコードで大変恐縮ですが、ご教授願えれば幸いです。
  • スピナーでセレクトされた文字列と変数(A,B,C,D)の値を比較して条件分岐させたいのですが、うまくいかず悩んでいます。
  • equalsメソッドで比較しているのですが、この部分がどうやら間違っているようなのですが、原因が全く分かりません。無知な質問になりますが、どうぞ皆様宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

listread()の中のString.equals()の使い方は正しいですから、itemqに入っている文字列が意図したものになっていない(大文字/小文字/全角/半角の違いとか、余計な空白が入っているとか)のでしょう。「該当なし」のところを tv.setText("該当なし ["+itemq+"]"); のように変更して、itemqに何が入っているか確認してみてください。

tokyo2199
質問者

お礼

早速のお返事ありがとうございます。 おっしゃられた通り半角のスペースが入っていたために意図したとおりにならなかったようです。 的確な指摘をいただき本当に感謝します。 私のような素人にとって大変心強い回答者です。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

単に「うまくいかず悩んでいます」というのは質問のしかたとして上手ではありません。「こういう状態の時にこれを実行するとこうなると思っていたのに、予想に反してこうなった」という情報を加えるべきです。 listread()の中で明らかにおかしいところを指摘すると、tv.setText("itemq");のダブルクオーテーションは要らないですよね。

tokyo2199
質問者

お礼

言葉足らずで申しわけありません。 スピナーでセレクトされているアイテムをlistread()のif文内でequalsメソッドを使って文字列が等しければテキストビューにアイテム名を表示するようにしたかったのですが、if文の中で比較した場合、同じ値のはずなのですが、falseがかえってきているようで"該当なし"が表示されてしまいます。 ダブルクォーテーションを消し忘れていました。 ご指摘ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • android HashMapのValueが取得で

    当サイトでご援助下さった皆様、ありがとうございました。 皆様のおかげで、なんとか下記のようなコードを組むことができました。 処理内容はcsvファイルを読み込み、Tokenizerで分割してArrayListに入れています。そしてListの値をHashMapにputしているのですが、キーを指定してもvalueを取得できません。 テキストビューでvalueを取得しようとしたのですが(//確認 ■■の部分)、値が返ってきてないようです。 HashMapにはちゃんとセットされているとおもうのですが・・・ 下記がコードです。 たびたびの質問で恐縮ですが、皆様のお知恵をお借りできればと思います。 csvファイル ----------------- "kye1 , 良い" "kye2 , 普通" "kye3 , 悪い" ----------------- public class TestCsvActivity extends Activity { String path = "/sdcard/test.csv"; Spinner mSpinner1; TextView mTextView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // ハッシュマップ mapSet(); Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { //@Override public void onClick(View v) { //Activity終了 finishActivity(); } }); } private void mapSet(){ try { // create reader InputStream input = new FileInputStream(path); InputStreamReader ireader=new InputStreamReader(input, "UTF-8"); CSVReader reader = new CSVReader(ireader,',','"',0); String[] csv; List<String> lists = new ArrayList<String>(); while ((csv = reader.readNext()) != null) { StringTokenizer tok = new StringTokenizer(csv[0], ","); while (tok.hasMoreTokens()) { String s = tok.nextToken(); //アイテムの追加 lists.add(s); } HashMap<String ,String> map = new HashMap<String ,String>(); for(int i = 0; i < lists.size(); i = i + 2){ String key = lists.get(i); String value = lists.get(i+1); map.put(key,value); } // 確認 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ TextView tv = (TextView)findViewById(R.id.textView1); tv.setText( map.get("key1") ); //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ } } catch (FileNotFoundException e) { Log.e("ERROR", e.toString()); } catch (UnsupportedEncodingException e) { Log.e("ERROR", e.toString()); } catch (IOException e) { Log.e("ERROR", e.toString()); } } private void finishActivity(){ //Activity終了 finish(); return; } }

  • Javaの質問です(引数の中でメソッド定義?)

    お世話になります。 現在、Javaについて勉強しておりまして一つ不明な点があり投稿させていただきました。 まずはソースをご覧ください。 ---------------------------------------------------------------------------------------------- button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Main.this, Editor.class); TextView textView = (TextView)findViewById(R.id.TextView01); CharSequence text = textView.getText(); intent.putExtra("TEXT", text + "000"); startActivityForResult(intent, SHOW_EDITOR); } }); ---------------------------------------------------------------------------------------------- 上記はサンプルプログラムから一部抜粋したものですが button.setOnClickListenerの引数でnew演算子を使用しており、 尚かつonClickメソッドをオーバーライドして定義しています。 C++開発経験者の私としては非常に見づらいのですが、こんな書き方って結構使うんでしょうか? これがイマイチ理解できていません。 この書き方をネットで探しても見つからなかったため、こちらでご質問させていただきました。 どなたかご教授願います。

  • java修正

    以下のDentaku.javaのソースコードには引き算と割り算の部分が抜けてしまっているのですが引き算と割り算の部分を付け加えてくれる方お願いします。。(うまく手を加えることができませんでした) // Dentaku.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Dentaku extends JFrame implements ActionListener { JTextField text1, text2; JButton button1, button2, button3; JLabel label; // コンストラクタ public Dentaku() { // コンテントペインを取得 Container contentPane = getContentPane(); // レイアウトマネージャーを設定 contentPane.setLayout(new GridLayout(6,1)); // テキストフィールド生成 text1 = new JTextField("", 20); text2 = new JTextField("", 20); // テキストフィースドを追加 contentPane.add(text1); contentPane.add(text2); // ボタンを作成 button1 = new JButton("+"); button2 = new JButton("x"); button3 = new JButton("Clear"); // アクションリスナーを登録 button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); // ボタンを追加 contentPane.add(button1); contentPane.add(button2); contentPane.add(button3); // ラベルを生成 label = new JLabel(""); // 文字を真ん中に表示 label.setHorizontalAlignment(JLabel.CENTER); // ラベルを追加 contentPane.add(label); // ウインドウが閉じられたときにアプリケーションを終了するように設定 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // サブコンポーネントの推奨サイズおよびレイアウトに合わせて // この Window をサイズ変更するように設定 pack(); // 表示します setVisible(true); } public static void main(String[] args) { // フレームを作成 Dentaku frame = new Dentaku(); } /** * アクションが発生すると呼び出されます。 */ public void actionPerformed(ActionEvent ae){ // イベントが指定されたボタンで発生した場合 //足し算 if (ae.getSource().equals(button1)) { try{ String tx1=text1.getText(); String tx2=text2.getText(); double d1=Double.parseDouble(tx1); double d2=Double.parseDouble(tx2); String answer=Double.toString(d1+d2); label.setText(answer); }catch (NumberFormatException e) { label.setText("数字を正しく入力してください。"); } } //掛け算 if (ae.getSource().equals(button2)) { try{ String tx1=text1.getText(); String tx2=text2.getText(); double d1=Double.parseDouble(tx1); double d2=Double.parseDouble(tx2); String answer=Double.toString(d1*d2); label.setText(answer); }catch (NumberFormatException e) { label.setText("数字を正しく入力してください。"); } } if (ae.getSource().equals(button3)) { text1.setText(""); text2.setText(""); label.setText(""); } } }

  • equalsメソッドの実装

    いくつかの本をインスタンスで生成します。この本を4つ生成するときに、3つ目に用意したインスタンスと4つ目に用意したインスタンスの中身が等しい=trueという処理をおこないたいのですが、調べてみた結果、自分でequalsを実装しなくてはならないらしく、その実装ができずにこまっています。equalsメソッドがどんな形になるか、教えていただけないでしょうか? class Book{ String name;//書名 String author;//著者 String publisher;//出版 /*コンストラクタ*/ Book( String name, String author, String publisher, int number){ this.name = name;//書名 this.author = author;//著者 this.publisher = publisher;//出版社 } } class BookShelf{ public static void main(String[] args){ /*インスタンスを作成*/ Book aBook_A = new Book("書名1","Aさん","A出版"); Book aBook_B = new Book("書名2","Bさん","B出版"); Book aBook_C = new Book("書名3","Cさん","C出版"); Book aBook_D = new Book("書名3","Cさん","C出版"); System.out.println(aBook_C.equals(aBook_d));//falseが返される。 } }

  • equals()について

    public class Test1 { public static void main(String[] args) { Long A = new Long(7); Long L = new Long(7); if(A.equals(L))System.out.println("Equal"); else System.out.println("Not Equal"); } } のようなプログラムではAとLは別で宣言されるため "別オブジェクト”に成ると思い込んでいました。 しかし結果はequalでした・・・ たとえばABCというクラスがあったとして、 ABC c = new ABC(); ABC d = new ABC(); ABC e = c; とすれば、 c、dはnot equal で c,eはequal に成りますよね。 これはすごくわかるんです。 で、なぜ上のプログラムでAとLがequalになってしまうのかわかりません・・・・ 誰か教えてください・・・

    • ベストアンサー
    • Java
  • androidでアプリを作ろうとしてるのですが

    package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class InOutTest extends Activity { /** Called when the activity is first created. */ public TextView txtInfo; public EditText edtText; public Button outputbutton; public TextView txtResult; public TextView txtjudge; public String strInch; public String gettext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウト作成 ここから LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //レイアウトを見えるようにする //レイアウト作成 ここまで //GUI部品作成 ここから // ラベル txtInfo = new TextView(this); txtInfo.setText("check"); strInch = ("check"); layout.addView(txtInfo); // エディタ edtText = new EditText(this); layout.addView(edtText); // ボタン txtResult = new Button(this); txtResult.setText("same or difference"); layout.addView(txtResult); // 結果表示用ラベル txtjudge = new TextView(this); txtjudge.setText("check"); layout.addView(txtjudge); //GUI部品作成 ここまで txtResult.setOnClickListener(new OnClickListener(){ public void onClick(View v) { gettext = edtText.toString(); if (strInch==gettext){ txtjudge.setText("ok"); } }; }); }} 上のプログラムで strInchに入ってるデータとgettextで取得した文章を比較して同じなら txtjudgeにOKと引き渡して表示させたいのですがうまく動きません 何方かどうぞよろしくお願い致します

    • ベストアンサー
    • Java
  • equals()メソッドの継承について

    ある本に ーーーーーーーーーーーーーーーーーーーーー class Car { protected int num; protected double gas; public Car() { num = 0; gas = 0.0; System.out.println("車を作成しました。"); } } class Sample8 { public static void main(String[] args) { Car car1 = new Car(); Car car2 = new Car(); Car car3; car3 = car1; boolean bl1 = car1.equals(car2); boolean bl2 = car1.equals(car3); System.out.println("car1とcar2が同じか調べたところ" + bl1 + "でした。"); System.out.println("car1とcar3が同じか調べたところ" + bl2 + "でした。"); } } JavaのクラスはすべてObjectクラスのメンバを継承していますので、equals()メソッドを記述しなくても、このメソッドを呼び出すことが出来るわけです。 ----------------------------------------- JavaのクラスはすべてObjectクラスのメンバを継承していますので、equals()メソッドを記述しなくても、このメソッドを呼び出すことが出来る    についてですが、 逆から言えば他の言語の場合は本来クラスの宣言の辺りにでもequals()メソッドを記述する必要があるという意味なんでしょうか?

    • ベストアンサー
    • Java
  • R.javaが自動生成されない

    Androidアプリ開発をEclipseでしていますがR.javaが自動生成されず、 ビルド時にエラーが出てしまいます。 コンパイル時に「Rを変数に解決できません」の主旨のエラーが出ています。 他サイトでの対処方法を参考に以下方法を実行しましたが、 R.javaは自動生成されずに半ばあきらめぎみです… 以下試した方法 --------------------------------------------------------- ○Eclipseのプロジェクトスクリーンを実行する ○「プロジェクト」→「自動的にビルド」にチェックが入っている ○layoutフォルダのXMLの文法エラーはない ○Eclipseの再起動 ○プロジェクトのクリーン ○xmlファイル名はactivity_mainであり大文字はつかっていない ○「ウィンドウ」を選択し「設定」→「Java」→「コンパイラー」 でコンパイラー準拠レベルを変更 --------------------------------------------------------- 以下activity_main.xml ---------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:textSize="12pt" /> <Button android:id="@+id/button01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button01" /> </LinearLayout> ---------------------------------------------------------------------- 以下string.xml ---------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Botan</string> <string name="hello">ボタンを押してね。</string> <string name="button01">クリック</string> </resources> ---------------------------------------------------------------------- 以下MainActivity.java ---------------------------------------------------------------------- package com.example.botan; import android.os.Bundle; import android.app.Activity; import android.view.*; import android.view.View.OnClickListener; import android.widget.*; public class MainActivity extends Activity { private TextView text1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text1 = (TextView)this.findViewById(R.id.TextView); Button btn1 = (Button)this.findViewById(R.id.burron01); btn1.setOnClickListener(new MyClickAdapter()); } class MyClickAdapter implements OnClickListener { public void onClick(View view){ text1.setText("クリックしました!"); } } }----------------------------------------------------------------------------------- どなたか他にチェックする箇所、 もしくは上記で不適切な記述があることが分かるかた ご教示下さい。 よろしくお願い申し上げます。 補足 以下参考サイト(ソース等はコピペしたので同じはずです) ▼Androidプログラミング日記 http://androidn.hannnari.com/link7-botan.html

    • ベストアンサー
    • Java
  • nullpointexceptionについて

    プログラミング初心者です。 エラーが全くわかりません。 ボタンを押すと、リストビューに移動するというものなんですが、ボタンを押すとnullpointexceptionが出ます。 最後の、et.setText(str);でエラーになっているようなんですが、 お分かりになる方いらっしゃいますか・・・? よろしくお願いいたします。 public class MainActivity extends Activity { EditText text_naiyou =null; Button save=null; Button buck=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); save=(Button)findViewById(R.id.save); buck=(Button)findViewById(R.id.buck); text_naiyou=(EditText)findViewById(R.id.text_naiyou); save.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { EditText et = (EditText)findViewById(R.id.text_naiyou); String str = et.getText().toString(); Intent intent = new Intent(); intent.setClass(getApplicationContext(), ListActivity.class); String pkg = getPackageName(); intent.putExtra(pkg + ".input",str); startActivity(intent); public class ListActivity extends Activity { EditText text_naiyou =null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); Intent intent = getIntent(); String pkg = getPackageName(); String str = intent.getStringExtra(pkg + ".input"); EditText et = (EditText)findViewById(R.id.text_naiyou); et.setText(str);

  • javaのプログラムについて

    初めまして。java初心者のものです。 コンピュータとじゃんけんをするというプログラムをつくりたいのですが、 コンパイルしたところ、次のようなエラーが出ました。 「シンボルが見つかりません。」 どこをどう直せばよいのでしょうか。お教え願います。 以下が私のプログラムです。 import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.applet.AudioClip; class Zyanken extends YJFrame implements ActionListener{ JButton[] btn; JPanel panel; Zyanken(String s, int w, int h,int b){ super(s,w,h,b); String[] ttl={"グー","チョキ","パー","Exit"}; String[] tips={"グーです","チョキです","パーです","終了します"}; int i; setUp(); Icon[] ic=new Icon[4]; for(i=0;i<4;i++) ic[i]=new ImageIcon("icon"+i+".gif"); btn=new JButton[4]; for(i=0;i<4;i++){ btn[i]=new JButton(ttl[i],ic[i]); btn[i].setToolTipText(tips[i]); btn[i].addActionListener(this); } JPanel p=new JPanel(); for(i=0;i<4;i++) p.add(btn[i]); p.setBackground(Color.pink); pane.add(p,BorderLayout.SOUTH); panel=new JPanel(); pane.add(panel,BorderLayout.CENTER); } public void actionPerformed(ActionEvent e){ int com=(int)(Math.random()*4); if(com==1){ panel.setText("COMはグーです。"); } else if(com==2){ panel.setText("COMはチョキです。"); } else{ panel.setText("COMはパーです。"); } if(e.getSource()==btn){ if(com==1){ panel.setText("あいこです。"); } else if(com==2){ panel.setText("あなたの勝ちです。"); } else{ panel.setText("あなたの負けです。"); } } else if(e.getSource()==btn){ if(com==1){ panel.setText("あなたの負けです。"); } else if(com==2){ panel.setText("あいこです。"); } else{ panel.setText("あなたの勝ちです。"); } } else{ if(com==1){ panel.setText("あなたの勝ちです。"); } else if(com==2){ panel.setText("あなたの負けです。"); } else{ panel.setText("あいこです。"); } } } } 大変恐縮ですが、よろしくお願いします。