2016-10-21 20 views
-2

こんにちは私はいつも私のことを思い出しています。トースト・ミー:「名前は正常に保存されました! 私はすべてのことを試しています。複数のチェックor ifステートメント

public void btnSave_Clicked(View view) { 
     TextView txtOname = (TextView)findViewById(R.id.txtOname); 
     TextView txtXname = (TextView)findViewById(R.id.txtXname); 
     String X = txtXname.getText().toString(); 
     String O = txtOname.getText().toString(); 
     if((X!="") && (O!="")){ 
      DatabaseHelper.insertName(getBaseContext(),((TextView)findViewById(R.id.txtOname)) 
        .getText().toString()); 
      DatabaseHelper.insertName(getBaseContext(),((TextView)findViewById(R.id.txtXname)) 
        .getText().toString()); 
      Toast.makeText(this,"names Successfully saved!",Toast.LENGTH_SHORT).show(); 
     }else{ 
      Toast.makeText(this,"E",Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+0

この質問を確認する:http://stackoverflow.com/questions/767372/java-string-equals-versus –

+0

命名規則に従って、 'String'sとequals演算子を比較しないでください。 –

+0

@MCEperperの命名規則... – HopefullyHelpful

答えて

0

はであなたのif文を置き換えます

if (!x.isEmpty() && !o.isEmpty()) { 
    //code 
} 

演算子は==オブジェクト参照を比較します。

.equals()は、文字列の値を比較します。

.isEmpty()文字列の長さが0

+1

もう一度感謝しています。 –

2

文字列である場合にtrueを返しますが、Javaの参照型であるため、動的に作成された空の文字列の参照は、あなたの変数とは異なります。 isEmptyの別のオプションはequalsです。

if (!x.equals("") && !o.equals(")) { 
    //code 
} 

私はおそらくisEmpty

0

文字列と一緒に行きたいけどオブジェクトです。オブジェクトインスタンス(それらの背後にある値)は、コンテンツが同じであることを保証するメソッドと手動で比較する必要があります。

==演算子は、文字列の参照(「アドレス」)を比較するだけです。したがって、実行時に2つのオブジェクトインスタンスを作成すると、コンテンツが同じであっても、それらは異なるアドレスを持ちます。一方、コンパイル時の文字列は内部化され、特殊なメモリに入れられ、重複はソートされます。

System.out.println(new String("test") == new String("test")); 

実行時に2つのオブジェクトが作成されるため、これはfalseを出力します。最初の例のnewキーワードは、新しいアドレスを持つ新しいオブジェクトが作成されることを要求します。

System.out.println("test" == "test"); 

これは、彼らが実行時に知られている文字列リテラルは、あるため、明示的にどちらかここに新しいキーワードを記載していない、真出力されます。コード内に表現されたリテラルを何らかの形で欲しいと指定しているだけなので、コンパイラーはそれらを内部化します。

関連する問題