java - 查找数组中数字的位置并给出点,Java

标签 java arrays user-input

我正在尝试编写一个程序,生成 20 个随机数并将其存储在数组 Data[] 中,并要求用户输入他们的猜测。如果他们的数字出现在数组中,则每次出现都会获得 10 分,打印数组并打印可以找到幸运数字的所有位置。如果它没有出现在数组中,我必须打印数组的最低值和最高值,并且只允许再尝试一次。如果玩家第二次答对,则每次出场可获得 1 分。 例如:Data[]={3,1,8,31,25,6,3,20,41,12,3,23,7,3,65,49,5,0,13,17} 如果用户输入 3那么程序会输出

3 can be found on the following positions:
0 6 10 13
3 appears 4 times. You get 40 points!

同样Data[]={3,1,8,31,25,6,3,20,41,12,3,23,7,3,65,49,5,0,13,17}如果用户输入2那么程序会输出

Sorry your lucky number 2 is not in the array! 
Hint: Lowest Value:1 Highest Value 65  Try again with a different number in this range.

如果他们输入65第二次尝试时,程序将输出

You get 1 point(s)!

这是我尝试过的代码,但它不起作用。它一直告诉我我的数字不在数组中。最低和最高值有效。我不知道如何解决它。我必须在明天之前完成这件事。任何帮助将不胜感激。

String input1 = JOptionPane.showInputDialog("Please enter your lucky number between 0 and 100.");
luck=Integer.parseInt(input1);
System.out.println("Input " +luck);

int Data[] = new int [20];
for( int i=0; i<Data.length;++i){
    Data[i] = (int) (Math.random() * 100);
    System.out.print(Data[i]+ " \t");
}
for( int i=0; i<Data.length;++i){
    if(Data[i]==luck){
        System.out.println(luck+ " can be found in the following positions: ");
        System.out.println(i);
        score=score+10;
        System.out.println(luck+ " appears " +(luck/10)+ " times. You get " +score+ " points.");
    }else if(Data[i]!=luck){
        Arrays.sort(Data);
        System.out.println();
        System.out.println(luck+ " is not in the array.");
        System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
        input1 = JOptionPane.showInputDialog("Please enter another number between 0 and 100.");
        luck=Integer.parseInt(input1);
    }
}
System.out.println();
System.out.println("Score: " +score);

}}

最佳答案

问题是您没有对照数组中的每个值检查您的值。如果输入的值与数组中的第一个值 (i=0) 不匹配,则您将要求用户提供另一个值。

您要做的就是询问一个值,将其与表中的每个值进行比较,然后做出决定。要么存在,要么不存在。

我添加了一个 boolean 值。如果找到我们的号码,我们将其设置为 true,否则我们将显示消息并要求用户重试。

试试这个:

    boolean found = false;
    for( int i=0; i<Data.length;++i){
        if(Data[i]==luck){
            System.out.println(luck+ " can be found in the following positions: ");
            System.out.println(i);
            score=score+10;
            System.out.println(luck+ " appears " +(luck/10)+ " times. You get " +score+ " points.");
            found = true;
        }
    }
    if(!found){
            Arrays.sort(Data);
            System.out.println();
            System.out.println(luck+ " is not in the array.");
            System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
            input1 = JOptionPane.showInputDialog("Please enter another number between 0 and 100.");
            luck=Integer.parseInt(input1);
        }

最后,您需要在循环内实现一个计数器,然后根据需要显示您的信息...现在,它将显示“#可以在以下位置找到”以及在循环中找到的每个实例的其他消息大批。 实现一个计数器,以及一种跟踪找到的值的索引的方法,然后您可以从 for 循环外部连贯地显示所有这些信息

编辑:为了给您更完整的实现... 这段代码基本上应该带你去几乎你需要去的地方:

public static void main(String[] args) {
    int Data[] = new int [20];
    for( int i=0; i<Data.length;++i){
        Data[i] = (int) (Math.random() * 100);
        System.out.print(Data[i]+ " \t");
    }

    while(true){
        String input1 = JOptionPane.showInputDialog("Please enter your lucky number between 0 and 100.");
        int luck=Integer.parseInt(input1);
        int score = 0;
        String positions = "";
        int counter = 0;
        System.out.println("Input " +luck);

        boolean found = false;
        for( int i=0; i<Data.length;++i){
            if(Data[i]==luck){
                positions +=  i + " ";
                counter++;
                score=score+10;
                found = true;
            }
        }
        if(found){
            System.out.println(luck+ " can be found in the following positions: ");
            System.out.println(positions);
            System.out.println(luck+ " appears " + counter + " times. You get " +score+ " points.");

        }
        else{
            Arrays.sort(Data);
            System.out.println();
            System.out.println(luck+ " is not in the array.");
            System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
        }

        System.out.println();
        System.out.println("Score: " +score);
    }

}

关于java - 查找数组中数字的位置并给出点,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662708/

相关文章:

java - 从 react-native 调用 java 类方法(不是 Android Activity java 类)

java - 无法将两个矩阵相乘(double[][] 数组)

javascript - 无法在数组内填充数组 - Javascript

Linux 中的 Python : Put user input asynchronously into queue

c# - 按下 ALT+KEY 时处理 KeyDown 事件

java - 如何使对话框 fragment 背景不可见?

java - JSF2 Richfaces 4.1.0 Ajax 局部渲染树

java - 无法将空字符串设置为 thymeleaf 中的属性值

c - 在没有函数帮助的情况下将 char 添加到字符串

java - 如何检查用户输入的路径是否正确?