Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 告诉用户输入的数字是否已存储在阵列中_Java - Fatal编程技术网

Java 告诉用户输入的数字是否已存储在阵列中

Java 告诉用户输入的数字是否已存储在阵列中,java,Java,我有一段代码,要求用户输入一个数组大小(不能超过50),数组大小成功设置为数组 我的问题在第二段代码中。 基本上,我希望它存储用户输入的数字(这是可行的),但是,如果该数字已经提供给数组,则会告诉用户该数字已经添加,并且该数字没有存储。示例:用户输入1、4、6、1。当再次给出1时,程序应告诉用户数字1已存储在数组中 我能做些什么来制作程序(使用ArrayList我可以使用.contains,但数组似乎没有这个功能) publicstaticvoidmain(字符串[]args){ 扫描仪阅读器=

我有一段代码,要求用户输入一个数组大小(不能超过50),数组大小成功设置为数组

我的问题在第二段代码中。 基本上,我希望它存储用户输入的数字(这是可行的),但是,如果该数字已经提供给数组,则会告诉用户该数字已经添加,并且该数字没有存储。示例:用户输入1、4、6、1。当再次给出1时,程序应告诉用户数字1已存储在数组中

我能做些什么来制作程序(使用ArrayList我可以使用.contains,但数组似乎没有这个功能)

publicstaticvoidmain(字符串[]args){
扫描仪阅读器=新扫描仪(System.in);
int[]listA;
while(true){
System.out.println(“输入listA的数组大小:”);
int listAsize=Integer.parseInt(reader.nextLine());
如果(列表大小>50){
System.out.println(“数组大小不能超过50!”);
}否则{
listA=新的int[listAsize];
//System.out.println(列表长度);
打破
}
}
int计数器=0;
while(计数器<列表长度){
System.out.print(“输入要添加到列表中的编号:”);
int inputListA=Integer.parseInt(reader.nextLine());
**if(listA.equals(listA[counter])){**
System.out.println(inputListA+“已添加到数组中,请输入其他数字”);
}否则{
listA[计数器]=输入listA;
计数器++;
}
}
代码中的问题:

if (listA.equals(listA[counter]))
对于
int-listA[]

使用
哈希集

  • 无需指定初始大小
  • 如果元素已经存在,
    add()
    将返回
    false

    • 最简单、最好的解决方案是使用HashSet()


      通过将用户限制为唯一的元素,您是在说“我真的不想要数组,我真的想要一个集合”

      此条件不正确:

      listA.equals(listA[counter])
      
      您需要设置一个从零到
      计数器-1
      的循环,并根据
      inputListA
      值检查每个元素。如果有值,循环应设置一个
      布尔
      标志,如下所示:

      boolean dup = false;
      for (int i = 0 ; i != counter ; i++) {
          if (listA[i] == inputListA) {
              dup = true;
              break;
          }
      }
      // If we went through listA up to count and dup remained false,
      // listA must be a new number; otherwise, it's a duplicate.
      if (dup) {
          System.out.println(inputListA + " was already added to the array, enter a different number");
      }
      

      如果必须使用数组,但不限于引入数组列表,则可以使用
      arrays.asList
      将其转换为数组列表

      Arrays.asList(yourArr).contains(someVal)
      
      或者您可以编写自己的
      contains
      方法,只需在每个元素上循环,查看它是否在数组中

      boolean hasElmt = false;
      for (int val : yourArr) {
         if (val == someVal) {
            hasElmt = true;
            break;
         }
      }
      

      由于它是一个基元数组,因此没有可以使用的方法。您必须使用
      for
      循环迭代数组,并检查每个索引的值

      for(int i = 0; i < listA.lenght; i++) {
          if(inputListA == listA[i]) {
              // it's already on the array
          }
      }
      
      for(int i=0;i
      如果您需要使用数组

      int counter = 0;
      while (counter < listA.length) {
          System.out.print("Enter number to add to listA: ");
          int inputListA = Integer.parseInt(reader.nextLine());
          if (found(listA,inputListA,counter)) {
              System.out.println(inputListA + " was already added to the array, enter a different number");
          } else {
              listA[counter] = inputListA;
              counter++;
          }
      }
      
      public boolean found (int[]list,int num,int counter){
         for(int i = 0;i<counter;i++){
            if(list[i]==num)
              return true;
         }
         return false;
      }
      
      int计数器=0;
      while(计数器<列表长度){
      System.out.print(“输入要添加到列表中的编号:”);
      int inputListA=Integer.parseInt(reader.nextLine());
      如果(找到(列表、输入列表、计数器)){
      System.out.println(inputListA+“已添加到数组中,请输入其他数字”);
      }否则{
      listA[计数器]=输入listA;
      计数器++;
      }
      }
      找到公共布尔值(int[]列表、int num、int计数器){
      
      对于(int i=0;我保留一个ArrayList而不是array?非常感谢,这很有效!这正是我想要的,也感谢大家的帮助我从阅读大家提供的所有代码中学到了很多
      int counter = 0;
      while (counter < listA.length) {
          System.out.print("Enter number to add to listA: ");
          int inputListA = Integer.parseInt(reader.nextLine());
          if (found(listA,inputListA,counter)) {
              System.out.println(inputListA + " was already added to the array, enter a different number");
          } else {
              listA[counter] = inputListA;
              counter++;
          }
      }
      
      public boolean found (int[]list,int num,int counter){
         for(int i = 0;i<counter;i++){
            if(list[i]==num)
              return true;
         }
         return false;
      }