-5

这是一个记忆实验,在屏幕上最多闪烁 3 个数字,然后消失几秒钟,然后要求用户重播数字/秒。我正在尝试使用数组来计算用户答案的​​准确性。所以我试图使用带有随机生成器方法的二维数组来判断数字在哪里。这可能效率很低,但我正在尽力而为。这是我到目前为止...

import java.util.*;

public class Pitt3 
{
    static int pause = 4;
    static int Screen_Size = 100;

    public static void main(String[] args) 
    {
        Scanner keyboard = new Scanner(System.in);

        //USED TO CALC. USER'S ACCURACY
        int accuracy = 99;

        for (int x = 0; x<2; x++)
        {
            //CREATES ARRAYS TO GENERATE DIGITS
            int[] array1 = new int[generateDigits(1)];
            int[] array2 = new int[generateDigits(1)];
            int[] array3 = new int[generateDigits(1)];


            //PRINTS OUT #'S + PAUSES
            System.out.println("Here are your numbers: ");
            System.out.println(generateDigits(1));
            System.out.println(generateDigits(1));
            System.out.println(generateDigits(1)); pause(4);


            //SPACES OUT THE QUESTION FROM ANSWER
            System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + 
            "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + 
            "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

            //PRINTS OUT #'S + PAUSES
            System.out.println("What is the first number? ");
            int ANSWER1a = keyboard.nextInt();

            System.out.println("What is the second number? ");
            int ANSWER1b = keyboard.nextInt();

            System.out.println("What is the third number? ");
            int ANSWER1c = keyboard.nextInt();


            if (ANSWER1a != array1[0] || ANSWER1b != array2[0] || ANSWER1c != array3[0])
            {
                accuracy = (accuracy - 33);
            }

            if (ANSWER1a == array1[0] || ANSWER1b == array2[0] || ANSWER1c == array3[0])
            {
                accuracy = accuracy;
            }

            System.out.println("Your accuracy was " + accuracy + "%");


        }

    }




    /**
     *GENERATES A RANDOM #
     */
    public static int generateDigits(int maxDigits)
    {
        Random generator = new Random();
        int numberDigits = generator.nextInt(maxDigits) + 1;
        int result = 0;

        for(int n = 0; n < numberDigits; n++)
        {
            result = result + generator.nextInt(10);
        }

        return result;

    }

    /**
     *SETS COMP. TO SLEEP FOR SPECIFIED SECONDS
     */
    public static int pause (int seconds)
    {
        try
        {
            Thread.sleep(seconds * 1000);
        }

        catch (InterruptedException e){}
        return pause;
    }


}
4

2 回答 2

2

我不知道您的问题是什么,但我会使用调试器检查此代码以了解您的代码的真正作用,因为有很多代码没有按照您的想法执行。

初学者的一个常见错误是编写太多代码而没有测试它,或者在某些情况下甚至检查它是否编译。这会导致非常难以修复的大量混乱。

我建议从一小段可编译的代码重新开始。使用方法来分解你的代码并测试它的工作原理。

例如,

String[] array = new String[generateDigits(3)]; 

这将创建一个随机长度的null值数组


我什至看不到它是如何编译的,但如果它编译了,我怀疑它会做你想要的。

array[0][0] = ANSWER2a;
array[0][1] = ANSWER2b;
array[0][2] = ANSWER2c;

if (ANSWER2a == generateDigits[0][0])
{

}

if (ANSWER2a != generateDigits[0][0])
{
    accuracy = accuracy - 50;
}

这可以打印这两行以获得相同的答案。

if (ANSWER1 == generateDigits(3))
{
    System.out.println("You were 100% accurate");
}

if (ANSWER1 != generateDigits(3))
{
    System.out.println("You were 0% accurate");
}

这将生成一个介于 0 和 27 之间的数字,这不是您的想法。

for(int n = 0; n < numberDigits; n++)
{
    result = result + generator.nextInt(10);
}

这种方法似乎没有用。我会删除它

public static void pause (int seconds)

你需要考虑你的代码到底在做什么。

于 2013-05-11T21:56:37.217 回答
0

如果我正确理解您的程序,您希望它做的是:

  1. 输出一组数字。
  2. 隐藏数字,然后暂停 4 秒钟。
  3. 用户输入他能记住的所有数字。
  4. 程序计算他/她的准确程度。

我建议你分阶段制作程序,先做一个数字。然后做几个数字。然后将其升级为阵列。然后添加计算的准确性。您将数组、字符串和整数混合在一个真正的混乱中。

提示:为 randomNumbers[] 设置一个数组,为 userAnswers[] 设置一个数组,循环比较它们。

        //PRINTS OUT #'S + PAUSES
        System.out.println("Here are your numbers: ");
        System.out.println(generateDigits(1));
        System.out.println(generateDigits(1));
        System.out.println(generateDigits(1)); pause(4);

如我所见,这部分输出一组与array1、array2 和array3 无关的新随机数。

于 2013-05-11T22:48:16.177 回答