消除java中的重复数据

消除java中的重复数据,java,arrays,Java,Arrays,我对java中的这个问题印象深刻,这就是我到目前为止所做的 计算机科学中的一个常见问题是消除重复数据。编写一个程序,要求用户输入一个介于1和100之间的数字(如果不是,请他们再试一次) 接下来,如果输入的数字*以前从未输入过,请使用数组跟踪它 如果以前输入过该号码,请通知用户并询问其他号码 您的程序应该循环,直到用户输入了10个唯一的数字,然后显示10个数字的列表 使用10个元素的数组来解决此问题 import java.util.Scanner; 公共类重复2_4_4{ 公共静态void

我对java中的这个问题印象深刻,这就是我到目前为止所做的

计算机科学中的一个常见问题是消除重复数据。编写一个程序,要求用户输入一个介于1和100之间的数字(如果不是,请他们再试一次)

  • 接下来,如果输入的数字*以前从未输入过,请使用数组跟踪它
  • 如果以前输入过该号码,请通知用户并询问其他号码
  • 您的程序应该循环,直到用户输入了10个唯一的数字,然后显示10个数字的列表
  • 使用10个元素的数组来解决此问题

import java.util.Scanner;
公共类重复2_4_4{
公共静态void main(字符串[]args){
//创建上一个变量
int-previous=0;
//创建一个数组
纽马拉国际酒店[]=新国际酒店[10];
扫描仪键盘=新扫描仪(System.in);
System.out.println(“请输入1到100之间的10个唯一数字”);
numArray[previous]=keyboard.nextInt();
如果(努马拉[先前]<1 | |努马拉[先前]>100)
System.out.println(“请输入一个介于1到100之间的数字,再试一次”);
for(int present=0;present100)
System.out.println(“请输入一个介于1到100之间的数字,再试一次”);
numArray[previous]=keyboard.nextInt();
//跟踪用户输入
对于(int present1=0;numArray[present1]==numArray[previous];present1++){
System.out.println(“请输入一个唯一的号码,再试一次”);
}      
}
}
}

我们可以很容易地为您编写这篇文章,但这最终无助于您学习编程。。。我想这就是你做这个练习的原因

因此,我只给你一些提示

  • 如果将数字读入一个临时变量,将使代码更简单、更容易理解(对您和其他人来说)。在检查它们是否在范围内之前,不要将它们放入阵列中

  • 一旦检查了数字是否在范围内,就需要检查数组中是否还没有该数字。想想你会怎么做

  • 一旦确定数字不在数组中,就需要将其放入数组中。想想你应该把它放在数组的什么地方。(显然,它不应位于已包含数字的插槽中…)

  • 正确的解决方案(最有可能)将一个循环置于另一个循环中


  • 最后,值得注意的是,有很多方法可以解决这个问题。一旦你找到了一个有效的解决方案。。。你明白这个解决方案。。。也许值得考虑是否有一种更简单/更“优雅”的方法来做这件事。

    您可以通过散列技术来做

        int index[]=new int[101];
        int numArray[] = new int[10];
        int i=0;
        while(i<10)
        {
            int temp=keyboard.nextInt();
            if(index[temp]==0)
            {
                 index[temp]=1;
                 numArray[i++]=temp;
            }
            else System.out.println("This Number is already entered");
        }
    
    int index[]=newint[101];
    纽马拉国际酒店[]=新国际酒店[10];
    int i=0;
    
    while(iHi,欢迎使用Stack Overflow。您的问题是什么?另外,请正确设置代码和问题的格式;在原始状态下阅读它非常困难。为什么不为此使用Set,如果用户输入重复值,则添加()方法将返回false@siso-因为这是一个初学者编程练习…老师显然想让学生学习使用数组。@StephenC…而不是让其他人思考/学习数组them@Bohemian-没错!这不是“散列”…这就像散列法意味着我们将一个整数转换为索引,并在O(1)中检索它的值。不。这不是散列法的意思。散列法是将一些值转换为整数。@StephenC请看这一点,读第二行。“类散列法”不是散列法。这是作者的简写方式“这有点像一个哈希表,但它不是真的”。阅读本页了解什么是哈希。
        int index[]=new int[101];
        int numArray[] = new int[10];
        int i=0;
        while(i<10)
        {
            int temp=keyboard.nextInt();
            if(index[temp]==0)
            {
                 index[temp]=1;
                 numArray[i++]=temp;
            }
            else System.out.println("This Number is already entered");
        }