【问题标题】:How do I Store 6 integers from Scanner Console into a Set如何将扫描仪控制台中的 6 个整数存储到一个集合中
【发布时间】:2013-09-18 18:38:13
【问题描述】:

我知道这很简单。我将如何从控制台获取输入并将输入存储到 Set 中,该 Set 稍后可用于在 Method 中返回。这是我目前所拥有的。

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class InputConsole {
public static void main(String[] args) {

    Set<Integer> s = new HashSet<Integer>(6);
    int[] numbers = new int[6];
    Scanner input = new Scanner(System.in);

    for (int i = 0; i < numbers.length; i++) {

        System.out.print("Please enter number ");
        numbers[i] = input.nextInt();
        {

        }

    }
}
}

我使用 and Array 只是为了测试。数组设置为 6,所以如果我在控制台中输入 6 个数字,它将停止。我已经实例化了 HashSet,但我不知道如何将控制台中的数字存储到其中。

【问题讨论】:

  • 为什么要先加入数组而不是直接加入集合?
  • ...s.add(...) 不起作用?
  • 如何直接添加到集合中?
  • 使用s.add(j),其中 j 是从 Scanner 读取的数字。但是请注意,使用HashSet 会删除重复项(如果他们输入数字 5 两次,您只会在集合中找到一次)并会删除顺序(如果他们输入 2 4 3 9 8 5,当您遍历该集合时,它可以以任何顺序出现)。
  • 另外,你说你想“将输入存储到一个 Set 中,以后可以用来在一个方法上返回”但是你的 Set 是你的 main 方法中的一个局部变量......除非您将其设为实例或类变量,否则您将无法从其他方法返回它。

标签: java arrays set java.util.scanner hashset


【解决方案1】:

使用方法Set::add()

for (int i = 0; i < numbers.length; i++) 
{    
    System.out.print("Please enter number ");
    s.add(input.nextInt());
}  

您不需要 int[] 数组
编辑:
整个 main()

   public static void main(final String ... args) 
   {
      final int inputs = 6;
      final Set<Integer> s = new HashSet<Integer>(6);
      final Scanner input = new Scanner(System.in);

      for (int i = 0; i < inputs; i++) 
      {
         System.out.print("Please enter number #" + (i + 1) + ":");
         s.add(input.nextInt());
      }

      System.out.println("Well done!");
      System.out.println(s);
   }

【讨论】:

  • 删除 int[] 后,还需要更改 numbers.length 吗?
  • @cw.prime 是的,你应该改变numbers.length -> 6
  • 这似乎仍在使用数组.. when a remove int[] numbers = new int[6];数组还需要吗?
  • 这是完美的。正是我想要的。
【解决方案2】:
import java.util.*;

class Hashsetdemo
{

     public static void main(String args[])
     {
         HashSet h=new HashSet(6);
         int [] no = new int[6];
         Scanner s=new Scanner(System.in);

         for (int i=0;i<no.length;i++)
         {
             System.out.println("please enter number");

             h.add(s.nextInt());
         }
         System.out.println(h);
     }

}

【讨论】:

  • 感谢您的帮助。一些解释会明显更好。此外,我认为您不应该使用原始类型(更喜欢问题中的HashSet&lt;Integer&gt; 而不是HashSet)。
猜你喜欢
  • 2018-10-29
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 2017-02-19
  • 1970-01-01
相关资源
最近更新 更多