尝试从控制台识别非重复值并将非重复值打印到输出

时间:2014-01-28 09:57:10

标签: java

我试图在用户输入一些数字时打印非重复值,它应该显示不重复的数字。我得到了所有的价值观,我的计划如下

public class Compare {
public static void main(String[] args){
    Scanner sc= new Scanner(System.in);
    System.out.println("enter the string:");
            int[] array = new int[7];
            for (int i=0; i<array.length;i++) {
            array[i] = Integer.parseInt(sc.nextLine());
         } 
            for (int i = 0; i < array.length; i++) {
                boolean found = false;
                for (int j = i+1; j < array.length; j++)
                    if (array[i] == array[j]) {
                        found = true;
                      break;
                    }
               if(!found)
                System.out.println(array[i]);
    }       
}
}

4 个答案:

答案 0 :(得分:0)

你只需改变两件事:

  1. 检查整个数组是否有重复项。 int j = 0代替int j = i
  2. 不要将该值与自身进行比较。将&& i != j添加到if条件中。
  3. 现在您的代码可以使用。

    输入:1,2,3,3,4,5,6

    输出:1,2,4,5,6

答案 1 :(得分:0)

如何使用HashSet

它只包含非重复值。

答案 2 :(得分:0)

取代boolean found而不是int count=0来计算数字并打印出count == 1

的数字

如图所示更改代码

  for (int i = 0; i < array.length; i++) {
            int count=0;
            for (int j = 0; j < array.length; j++)
                if (array[i] == array[j]) {
                    count++;
                }
           if(count==1)
            System.out.println(array[i]);
} 

输入:
1
2
2
3
3
4
5

输出:
1
4
5

答案 3 :(得分:0)

您可以使用计算值数量的地图更快地执行此操作:

public class Compare {
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);
        System.out.println("enter the string:");
        Map<int, int> values = new HashMap<int, int>();
        for (int i=0; i<7;i++) {
          value = Integer.parseInt(sc.nextLine());
          if (!values.contains(value)) {
              values.put(value, 1);
          } else {
              values.put(value, values.get(value) + 1);
          }
        }
        for (int value : values.keySet()) {
          if (values.get(value) == 1) {
            System.out.println(value);
          }
        }
     }       
}