0

我曾经有一些基本的java技能,但自从我使用它们已经有几年了。我的程序只做一次我想做的所有事情,但我需要它运行程序 1000 次并保持rtCorrectrtIncorrect. 这两个总数实际上是我最终需要的唯一东西(即我只需要最后一个注释掉的语句)。我不确定我是否应该在我的主要方法中添加一个外部循环,或者我是否应该有一个单独的方法。我不担心它很漂亮,所以我宁愿在 main 方法中用一个简单的循环来完成这一切。

import java.util.Random;

public class Thesis {

        public static void main (String [] args){

        int correct = 0;
        int incorrect = 0;
        int rtCorrect = 0;
        int rtIncorrect = 0;


            while(correct<20 && incorrect<20){
                    Random rand = new Random();
                    int pickedNumber = rand.nextInt(100);
                    if (pickedNumber<52){
                        correct++;
                    }
                    else if (pickedNumber>51){
                        incorrect++;
                    }
                    if (correct == 20){
                        rtCorrect = rtCorrect + correct + incorrect;
                    }
                    else if (incorrect == 20){
                        rtIncorrect = rtIncorrect + incorrect + correct;
                    }
                }

        }
        System.out.printf("Correct: %d Incorrect: %d", correct, incorrect);
        System.out.printf ("\nCorrect Response Time: %d\nIncorrect Response Time: %d", rtCorrect, rtIncorrect);
        //System.out.printf ("\nTotal Correct RT's: %d \nTotal Incorrect RT's: %d", totalRTCorrect, totalRTIncorrect);

    }

}

这是我尝试过的:

import java.util.Random;

public class Thesis {

        public static void main (String [] args){

        int correct = 0;
        int incorrect = 0;
        int rtCorrect = 0;
        int rtIncorrect = 0;


        for (int j = 0; j < 1000;j++){
            int totalRTIncorrect = 0;
            int totalRTCorrect = 0;

            while(correct<20 && incorrect<20){
                    Random rand = new Random();
                    int pickedNumber = rand.nextInt(100);
                    if (pickedNumber<52){
                        correct++;
                    }
                    else if (pickedNumber>52){
                        incorrect++;
                    }
                    if (correct == 20){
                        rtCorrect = rtCorrect + correct + incorrect;
                    }
                    else if (incorrect == 20){
                        rtIncorrect = rtIncorrect + incorrect + correct;
                    }
                }

                totalRTIncorrect = totalRTIncorrect + rtIncorrect;
                totalRTCorrect = totalRTCorrect + rtCorrect;
                System.out.printf ("\nTotal Correct RT's: %d \nTotal Incorrect RT's: %d", totalRTCorrect, totalRTIncorrect);
        }

import java.util.Random;

public class Thesis {

        public static void main (String [] args){

        int correct = 0;
        int incorrect = 0;
        int rtCorrect = 0;
        int rtIncorrect = 0;
        int totalRTIncorrect = 0;
        int totalRTCorrect = 0;

        for (int j = 0; j < 1000;j++){

            while(correct<20 && incorrect<20){
                    Random rand = new Random();
                    int pickedNumber = rand.nextInt(100);
                    if (pickedNumber<52){
                        correct++;
                    }
                    else if (pickedNumber>52){
                        incorrect++;
                    }
                    if (correct == 20){
                        rtCorrect = rtCorrect + correct + incorrect;
                    }
                    else if (incorrect == 20){
                        rtIncorrect = rtIncorrect + incorrect + correct;
                    }
                }

                totalRTIncorrect = totalRTIncorrect + rtIncorrect;
                totalRTCorrect = totalRTCorrect + rtCorrect;
        }
        System.out.printf ("\nTotal Correct RT's: %d \nTotal Incorrect RT's: %d", totalRTCorrect, totalRTIncorrect);
        //System.out.printf("Correct: %d Incorrect: %d", correct, incorrect);
        //System.out.printf ("\nCorrect Response Time: %d\nIncorrect Response Time: %d", rtCorrect, rtIncorrect);


    }

}

这些都没有给我我需要的东西。第一个只打印出程序的一个迭代 1000 次,第二个给我一个 RT 为 34000 或它在一次迭代 x 1000 中得到的任何 RT,另一个 RT 为 0

4

2 回答 2

2

任何一个。我建议(因为你是新手)只是在你的代码周围放置一个 for 循环,当它工作时,如果你愿意,然后将它重构为单独的方法。

如果您将其重构为一种新方法,我建议您在 main()

 MyClass myclass = new MyClass();
myclass.runProgram();

然后让 runProgram() 进行循环,并使用另一种方法来处理您已有的东西,并将当前计数保留为 MyClass 的成员变量。避免链接大量静态调用并且必须具有返回值。

好的...这部分是为了解决以下评论:

    public static void main (String [] args){


            int totalRTIncorrect = 0;
            int totalRTCorrect = 0;

            for (int j = 0; j < 1000;j++){

                int correct = 0;
                int incorrect = 0;
                int rtCorrect = 0;
                int rtIncorrect = 0;

                while(correct<20 && incorrect<20){
                    ...
于 2013-10-24T15:07:47.670 回答
0

在这种情况下,因为您知道希望代码循环的频率,所以您使用for loop. 语法如下:

for(counter; termination condition; incremental step)

例如:

for(int x = 0; x < 1000; x++)

在您的代码上下文中,您只需将其包装在您的方法中,如下所示:

for(int x =0; x < 1000; x++) {

 while(correct<20 && incorrect<20){
                Random rand = new Random();
                int pickedNumber = rand.nextInt(100);
                if (pickedNumber<52){
                    correct++;
                }
                else if (pickedNumber>51){
                    incorrect++;
                }
                if (correct == 20){
                    rtCorrect = rtCorrect + correct + incorrect;
                }
                else if (incorrect == 20){
                    rtIncorrect = rtIncorrect + incorrect + correct;
                }
   }
}

然后,当代码完成后,打印出你的值,你将获得1000案例的采样数据,尽管在更科学的笔记上,如果你正在为论文写这篇文章并且你正在处理 PRNG(伪随机数字生成器),那么您需要一个比这大得多的抽样框架。:)

于 2013-10-24T15:11:54.673 回答