Skocz do zawartości
ManioKK

Problem z warunkiem w if

    Rekomendowane odpowiedzi

    Witam,

    Mam problem aplikacja działa dziwnie. Przy każdym pytaniu wyświetla correct przy podaniu odpowiedzi Mariusz, która powinna być poprawna tylko dla pierwszego pytania a nie do wszystkich.

     

    Kod MainActivity:

    package com.example.mariusz.quiz2;
    
    import android.content.Intent;
    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.Gravity;
    import android.view.View;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    private static final String answer_1= "Mariusz";
    private static final String answer_2= "Mars";
    private static final String answer_3= "Tokyo";
    int szczesliwynumerek;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    Button b1;
    String[] pytania = {getString(R.string.question1), getString(R.string.question2), getString(R.string.question3)};
    int zakres = pytania.length - 1;
    int szczesliwynumerek = (int) Math.round(Math.random() * zakres);
    
    setContentView(R.layout.activity_main);
    TextView textView_1 = new TextView(MainActivity.this);
    textView_1.setGravity(Gravity.CENTER);
    textView_1.setTextSize(25);
    textView_1.setText(pytania[szczesliwynumerek]);
    LinearLayout activity_main = (LinearLayout) findViewById(R.id.layout);
    activity_main.addView(textView_1);
    b1 = (Button) findViewById(R.id.answer1);
    
    
    b1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, Answer.class);
    startActivityForResult(intent, 2);
    }
    });
    }
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    
    if (requestCode == 2) {
    String message = data.getStringExtra("MESSAGE");
    
    if ((message.equalsIgnoreCase(answer_1) && szczesliwynumerek == 0) || (message.equalsIgnoreCase(answer_2) && szczesliwynumerek == 1) ||
    (message.equalsIgnoreCase(answer_3) && szczesliwynumerek == 2)) {
    
    TextView textView_2 = new TextView(MainActivity.this);
    textView_2.setGravity(Gravity.CENTER);
    textView_2.setTextSize(40);
    textView_2.setText("Correct");
    LinearLayout activity_main = (LinearLayout) findViewById(R.id.layout);
    activity_main.addView(textView_2);
    }
    else
    {
    TextView textView_3 = new TextView(MainActivity.this);
    textView_3.setGravity(Gravity.CENTER);
    textView_3.setTextSize(40);
    textView_3.setText("Incorrect");
    LinearLayout activity_main = (LinearLayout) findViewById(R.id.layout);
    activity_main.addView(textView_3);
    }
    }
    
    }
    }
    

    Z góry dzięki za pomoc

    Pozdrawiam

    Mariusz













     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    Tylko że Ty nie przyrównujesz tutaj nic do "pytanie" masz tylko odpowiedź z activity "Answer", random na "szczesliwynumerek" i porównujesz to. Pouruchamiaj kilka razy tą apkę to zobaczysz że i jakiś incorrect będzie. Masz mały zakres randoma i jest spora szansa że zawsze trafiasz w szczęśliwy numerek równy poprawnej odpowiedzi.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Przy Mariusz zawsze jest correct, a przy innych odpowiedziach incorrect, a ma być Mariusz correct dla pierwszego pytania, Mars Correct dla drugiego pytania i Tokyo correct dla trzeciego pytania. A dla wszystkich pytan Mariusz daje odpowiedz correct i nie wiem czemu...

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    Ale gdzie masz sprawdzanie jaki to jest numer pytania? 

    Bo widzę że masz 

    String[] pytania = {getString(R.string.question1), getString(R.string.question2), getString(R.string.question3)};
    

    Ale nigdzie z tego nie korzystasz.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Myślałem, że wystarczy sprawdzić którą pozycję z tablicy wylosowało.

    To proszę o pomoc jak z tego skorzystać:

    String[] pytania = {getString(R.string.question1), getString(R.string.question2), getString(R.string.question3)};

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x