java - 我的 Int() 总是返回 0?

标签 java android

我遇到了这个问题... 请注意,tip.setText 告诉我它高于 0。 我还将在另一个类中调用 getResults 方法。 (int“正确”已经大于0)

我想知道为什么 getResults 中的正确值始终为 0,我该如何解决这个问题?

     public int correct = 0;

    private String[] questions =
   {"Question 1", 
    "Question 2",
    "Question 3", 
    "Question 4",
    "Question 5"
    };

public void onClick(View view) {
        if (alive == false) {
        //  startActivity(new Intent("com.aleksei.etb.END"));
            return;
        }
        try {
        button_click = MediaPlayer.create(this, R.raw.button_click);
        button_click.start();
        switch(view.getId()){
        case R.id.button5: //main
            break;
        case R.id.button1: //answer_1
            if(correct(1))
                correct++;


            break;
        case R.id.button2: //answer_2
            if(correct(2))
                correct++;

            break;
        case R.id.button3: //answer_3
            if(correct(3))
                correct++;

            break;
        case R.id.button4: //answer_3
            if(correct(4))
                correct++;


            break;

        default:
            break;


        }
        Game(i1);
        tip.setText("Correct answers "+correct); //this thing tells me that it's not 0. (Well, in the beggining it's 0, but after counter goes up! (correct++)
        } catch (Exception ex){}
    }

    public int getResults(){
        return (int)(correct*5)/(questions.length+1);
    }

编辑:

public class ETBetaActivity extends Activity implements View.OnClickListener {

    Button answer_1,
    answer_2,answer_3,
    answer_4,main;

    TextView q_textview,
    tip;

    private String a1,a2,a3,a4 = "";

    private int i1 = 0;
    public float correct = 0;

    private boolean alive = true;

    MediaPlayer button_click;

    private String[] questions =
   {"Question 1", 
    "Question 2",
    "Question 3", 
    "Question 4",
    "Question 5"
    };
    private String[] answers_correct =
   {"Correct answer 1",
    "Correct answer 2",
    "Correct answer 3", 
    "Correct answer 4",
    "Correct answer 5"
    };

    private String[][] answers_wrong = 
    { {"Incorrect answer 1-1", "Incorrect answer 1-2" , "Incorrect answer 1-3"},
      {"Incorrect answer 2-1", "Incorrect answer 2-2" , "Incorrect answer 2-3"},
      {"Incorrect answer 3-1", "Incorrect answer 3-2" , "Incorrect answer 3-3"},
      {"Incorrect answer 4-1", "Incorrect answer 4-2" , "Incorrect answer 4-3"},
      {"Incorrect answer 5-1", "Incorrect answer 5-2" , "Incorrect answer 5-3"},


    };


    List<String> question_list = new ArrayList<String>();
    List<String> answer_list_correct = new ArrayList<String>();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        getData();
    }


    @Override
    public void onClick(View view) {
        if (alive == false) {
        //  startActivity(new Intent("com.aleksei.etb.END"));
            return;
        }
        try {
        button_click = MediaPlayer.create(this, R.raw.button_click);
        button_click.start();
        switch(view.getId()){
        case R.id.button5: //main
            break;
        case R.id.button1: //answer_1
            if(correct(1))
                correct++;


            break;
        case R.id.button2: //answer_2
            if(correct(2))
                correct++;

            break;
        case R.id.button3: //answer_3
            if(correct(3))
                correct++;

            break;
        case R.id.button4: //answer_3
            if(correct(4))
                correct++;


            break;

        default:
            break;


        }
        Game(i1);
        correct++;
        tip.setText("Correct answers "+correct);
        } catch (Exception ex){}
    }


    public float getResults(){
        return (Float)(correct*5)/(questions.length);
    }

    private boolean correct(int button){
        for (int i = 0; i < answers_correct.length; i++){
        if(button == 1 && a1 == answers_correct[i]
            || button == 2 && a2 == answers_correct[i]
            || button == 3 && a3 == answers_correct[i]
            || button == 4 && a4 == answers_correct[i])
            return true;
        }
        return false;
    }

    private void Game(int q){
        try {
        if(i1 >= questions.length) { //no more questions
            startActivity(new Intent("com.aleksei.etb.END"));
            alive = false;
            return;
        }

        main.setText("Next");
        String answer_list[][] = {
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}
        };

        Collections.shuffle(Arrays.asList(answer_list[q]));
        answer_1.setText(answer_list[q][0]);
        answer_2.setText(answer_list[q][1]);
        answer_3.setText(answer_list[q][2]);
        answer_4.setText(answer_list[q][3]);
        a1 = answer_list[q][0];
        a2 = answer_list[q][1];
        a3 = answer_list[q][2];
        a4 = answer_list[q][3];
        q_textview.setText(questions[q]);
        /*questions = question_list.toArray(new String[question_list.size()]);
        answers_correct = answer_list_correct.toArray(new String[answer_list_correct.size()]);
        question.setText(questions[i1]);        

        answer_list_correct.remove(questions[i1]);
        question_list.remove(questions[i1]);*/

        } catch(Exception e){
            System.out.println(e);
        }
        i1++;
    }
    private void getData(){
        //Getting the data
        main = (Button) findViewById(R.id.button5);
        answer_1 = (Button) findViewById(R.id.button1);
        answer_2 = (Button) findViewById(R.id.button2);
        answer_3 = (Button) findViewById(R.id.button3);
        answer_4 = (Button) findViewById(R.id.button4);
        q_textview = (TextView) findViewById(R.id.question);
        tip = (TextView) findViewById(R.id.answ1);

        main.setOnClickListener(this);
        answer_1.setOnClickListener(this);
        answer_2.setOnClickListener(this);
        answer_3.setOnClickListener(this);
        answer_4.setOnClickListener(this);

        //Resets the text
        //Note to self: Replace with another ContectView
        main.setText("Begin!");
        answer_4.setText("");
        answer_3.setText("");
        answer_2.setText("");
        answer_1.setText("");
        tip.setText("");

    /*  for(String x : questions) {
            for(String y : answers_correct){

            answer_list_correct.add(y);
            question_list.add(x);

            Collections.shuffle(answer_list_correct);
            Collections.shuffle(question_list);

            }
        } */



    }


    }

另一类

       public class End extends Activity implements RatingBar.OnRatingBarChangeListener {
    ETBetaActivity classy = new ETBetaActivity();

    TextView score;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.end);
        score = (TextView) findViewById(R.id.score);
        results();
        final RatingBar yourRating = (RatingBar) findViewById(R.id.ratingBar1);
        yourRating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){

            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating,
              boolean fromUser) {
             // TODO Auto-generated method stub
              //  yourRating.setRating(rating);
                yourRating.setRating(classy.getResults());
              /*  Toast.makeText(End.this, "M:"+String.valueOf(rating),
               Toast.LENGTH_LONG).show(); */
                Toast.makeText(End.this, "M "+classy.getResults(), Toast.LENGTH_LONG).show();
            }});
     //movieImage.setImageResource(R.drawable.icon);       
 }


    @Override
    public void onRatingChanged(RatingBar ratingBar, float rating,
            boolean fromUser) {
        // TODO Auto-generated method stub

    }

    public void results(){
        score.setText("Your mark  "+classy.getResults());
    }

    }

最佳答案

开始结束 Activity 时,您应该执行以下操作:

Intent end = new Intent("com.aleksei.etb.END");
end.putExtra("results", getResults());
startActivity(end);

然后从 End-activity 中删除 classy-field 并在 onCreate() 方法中读取结果,如下所示:

int results = getIntExtra("results");

这将正确地将结果从一个 Activity 传输到下一个 Activity 。

关于java - 我的 Int() 总是返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129158/

相关文章:

java - HttpClient 不保持登录状态

android - react native : facebook-android-sdk dependency build error

android - 具有不同用户类型的 Firebase Auth

java - fragment 未完全膨胀

javascript - 纯 JS 验证在移动设备中始终返回 false

java - 在 Java 中使用没有条件的复合语句

java - 扩展默认 Maven 原型(prototype)环境变量

java - 使用 OpenJDK 在 Windows 上运行 JabRef

android - sencha 中的 setTimer() 和 timeInterval() 在 Android 和 iPhone 设备上不起作用

java - 将 JMonkey 教程翻译成 JRuby