0

我正在做这个项目,希望我编写一个输入 20 个数字的程序,每个数字都在 10 到 100 之间,包括 10 到 100。在读取每个数字时,仅当它不与已读取的数字重复时才显示它。我唯一感到困惑的部分是如何检查用户可能输入的重复值。如果用户确实输入了重复值,则不应再次存储它。

此外,输入的值应与用户先前输入的值一起输入后打印出来,例如:23 23 45 23 45 67 23 45 67 12 等。

我在java编程方面还是相当新的,所以任何帮助都会很棒。

import java.util.*;

public class NumberArray 
{
    public static void main(String[] args) 
    {
        // declare an array with 20 elements

        Scanner input = new Scanner( System.in );

            int num[] = new int[20];
            int index = 0;
            int enteredNumbers = 0;

            while( enteredNumbers < num.length )
            {
                System.out.print( "\nEnter number: ");
                int numberInput = input.nextInt();

                if (numberInput >= 10 && numberInput <= 100)
                {
                    num[index] = numberInput;
                    System.out.println("Number stored.");
                }

                //Check if numbers repeat--if not add to array
                else if(num[index] == numberInput)
                {
                    System.out.println("Duplicate value entered!\n");
                }

                else
                {
                    System.out.println("Invalid Number, enter within range.\n");
                }

                // increment number of entered numbers
                System.out.print(num[index] + "  ");
                System.out.println();
                enteredNumbers++;
                index++;
            }
      }
}
4

3 回答 3

2

如果您要从输入数字中查找重复项,一个建议是将索引从 1 到 100 的布尔数组全部设置为 false。从用户那里读取一个数字后,使用该输入的数字作为数组的索引,如果该位置之前为假,则将该位置标记为真。如果您发现该位置以前是正确的,那么您找到了一个副本,您可以进行打印。

于 2014-07-09T02:13:14.537 回答
1

我们将只使用数组,因为您是新程序员,并且可能不熟悉您可用的无数集合。

首先,您需要一种方法来检查整个输入值数组是否存在重复项。

//if the array contains the number just input, return true.
//else return false.
public static boolean checkForDuplicates(int[] array, int enteredValue){
   for(int i=0;i<array.length;i++){
       if(array[i] == enteredValue)
           return true;
   }
   return false;
}

每次输入一个数字时,您都会像现在一样检查它是否在正确的范围内(10 到 100),然后调用此方法来查看您的数组是否有重复项。

如果输入的号码不存在,您将打印出所有存储的号码。让我们为此创建另一种方法来保持清洁。

public static void printArray(int[] ary, int enteredValues){
    for(int i=0;i<enteredValues;i++){
        System.out.print(ary[i]+" ");
    }
    System.out.println();
}
于 2014-07-09T02:16:05.510 回答
0

使用集合,在获取输入后使用 set.add() 将其添加到集合中。它会根据它是否已经存在返回一个布尔值。检查结果并显示适当的消息。做一些功课的人... :)

于 2014-07-09T02:14:08.977 回答