If Abfrage: Anfängerfrage: Wo ist der Fehler?

  • Antworten:1
  • Bentwortet
Marius Poppel
  • Forum-Beiträge: 5

21.02.2016, 12:51:39 via Website

Hallo,
kann mir bitte jemand sagen wo hier der Fehler ist:
Mein Programm stellt eine Frage und überprüft dann ob die Antwort richtig oder falsch ist und gibt dies aus, mein Code:

package com.example.mapi.test;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

Button cmdButton;
Button cmdNeueFrage;
Button cmdRichtigFalsch;
TextView lblFrage;
EditText txtAntwort;


String frage1="Was ist die Hauptstadt von Deutschland?";
String antwort1="Berlin";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    cmdButton = (Button) findViewById(R.id.cmdButton);
    cmdNeueFrage = (Button) findViewById(R.id.cmdNeueFrage);
    lblFrage = (TextView) findViewById(R.id.lblFrage);
    txtAntwort = (EditText) findViewById(R.id.txtAntwort);
    cmdRichtigFalsch = (Button) findViewById(R.id.cmdRichtigFalsch);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

 public void antworten(View v){
    String gesamtantwort = txtAntwort.getText().toString();
if(gesamtantwort==antwort1) {
    lblFrage.setText(gesamtantwort +" ist richtig;");
}
    else{
    lblFrage.setText(gesamtantwort + " ist falsch;" + antwort1 + " wäre richtig gewesen");
}

}
public void neueFrage(View v){
    lblFrage.setText(frage1);


}

}

Die Ausgabe lautet: Berlin ist falsch;Berlin wäre richtig gewesen

Ich kann mir den Fehler einfach nicht erklären, DANKE :D

— geändert am 21.02.2016, 12:53:43

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

21.02.2016, 13:06:36 via Website

Hallo Marius,

Dein Fehler liegt tatsächlisch in der If Abfrge selbet ;)

Denn du machst es so:

if(gesamtantwort==antwort1) {

Laut der Theorie ist das auch richtig, aber mit == Vergleichst du die String instanzen, welche durchaus Unterschiedlich sein könen.
String vergleiche macht man immer mit String#equals(otherString);

Also in deinem Fall

if(gesamtantwort.equals(antwort1)) {

Hier noch was zum nachlesen:
http://stackoverflow.com/questions/767372/java-string-equals-versus

— geändert am 21.02.2016, 13:07:38

LG Pascal //It's not a bug, it's a feature. :) ;)

Marius Poppel

Antworten