Java 如何添加输入编号以消除重复的编号?

Java 如何添加输入编号以消除重复的编号?,java,input,sum,Java,Input,Sum,例如,我输入的数字是:10和15。第二个输入将被忽略,因为它已重复。所以总和是10+15-25。我该怎么做 public class MP2A { public static Scanner objScan = new Scanner (System.in); public static void main (String []args) { double [] dNum = new double[3]; System.out.prin

例如,我输入的数字是:10和15。第二个输入将被忽略,因为它已重复。所以总和是10+15-25。我该怎么做

public class MP2A {

    public static Scanner objScan = new Scanner (System.in);
    public static void main (String []args)
    {
        double [] dNum = new double[3];

        System.out.println("Input values for your array");
        for (int iCtr=0; iCtr<dNum.length; iCtr++) {
           dNum[iCtr] = objScan.nextDouble();
        }

        double sum = 0;
        for (int iCtr=0; iCtr<dNum.length; iCtr++) {
            for (int iCtr2=0; iCtr2<dNum.length-1; iCtr2++) {
                if (dNum[iCtr2] == dNum[iCtr]) {
                   continue;
                }  
            } 
            sum+=dNum[iCtr];
        }     
        System.out.println(sum);

    }     
}
公共类MP2A{
公共静态扫描仪objScan=新扫描仪(System.in);
公共静态void main(字符串[]args)
{
double[]dNum=新的double[3];
System.out.println(“数组的输入值”);
对于(int iCtr=0;iCtr您应该检查该类。您可以在
哈希集中输入任意数量的数字,但即使相同的数字插入多次,
哈希集
也只包含每个唯一数字的一次出现

编辑:如果不允许使用
HashSet
,可以这样做:使用
ArrayList
(或者如果不允许使用
ArrayList
,则使用大的
int[]
)跟踪已添加的号码。对于每个新号码,请检查该号码是否已存在于列表中,并仅将其添加到列表(和总和)中如果它不在那里。

您应该检查该类。您可以在
哈希集中输入任意数量的数字,但即使相同的数字插入了多次,
哈希集将只包含每个唯一数字的一次出现


编辑:如果不允许使用
HashSet
,可以这样做:使用
ArrayList
(或者如果不允许使用
ArrayList
,则使用大的
int[]
)跟踪已添加的号码。对于每个新号码,请检查该号码是否已存在于列表中,并仅将其添加到列表(和总和)中如果它不存在。

将所有输入添加到一个
集合中,然后为求和迭代
集合
元素。

将所有输入添加到
集合
中,然后为求和迭代
集合
元素。

仅当数组不包含输入数字时才将其添加到数组中。这是假设的你还没有被介绍过(你已经提到你不知道集合)

import java.util.Scanner;
公共级MP2A{
公共静态扫描仪objScan=新扫描仪(System.in);
公共静态void main(字符串[]args){
double[]dNum=新的double[3];
System.out.println(“数组的输入值”);
对于(int i=0;i
仅当数组尚未包含输入数字时才将其添加到数组中。这是假设您尚未被介绍到(您已经提到您不了解集合)

import java.util.Scanner;
公共级MP2A{
公共静态扫描仪objScan=新扫描仪(System.in);
公共静态void main(字符串[]args){
double[]dNum=新的double[3];
System.out.println(“数组的输入值”);
对于(int i=0;i
想想如何用铅笔和纸解决问题:

  • 接下一个号码
  • 我们以前见过这个数字吗
  • 如果有,请返回步骤1
  • 如果没有,那么将该数字添加到我们已经看到的数字列表中
  • 把这个数字加到总数上
  • 返回到步骤1

  • 现在看看你的代码如何匹配这个简单的算法。

    想想你将如何用铅笔和纸来解决这个问题:

  • 接下一个号码
  • 我们以前见过这个数字吗
  • 如果有,请返回步骤1
  • 如果没有,那么将该数字添加到我们已经看到的数字列表中
  • 把这个数字加到总数上
  • 返回到步骤1

  • 现在看看你的代码是如何匹配这个简单算法的。

    检查当前数字是否等于上一个数字。如果是这样,就不要打印它。最简单的解决方案就是跟踪你添加的所有内容(例如:使用
    哈希集
    )-如果以前没有添加过,请将其添加到累加器中。我已经尝试过这样做。但程序的要求是不打印。我必须添加输入数字,但忽略重复的数字。我尝试使用if语句。它确定重复的数字,但当我尝试计算总和时,所有内容仍在添加。您的内部循环it’没什么。想想看。好吧。我将尝试@Aasmund Eldhuset建议。非常感谢。检查当前数字是否等于上一个数字。如果是这样,就不要打印。简单的解决方案是跟踪您添加的所有内容(例如:使用
    哈希集
    )-如果以前没有添加过,请将其添加到累加器中。我尝试过这样做。但程序的要求是不打印。我必须添加输入数字,但忽略重复的数字。我尝试使用if语句。它确定重复的数字,但当我尝试计算时
    import java.util.Scanner;
    public class MP2A {
    
        public static Scanner objScan = new Scanner(System.in);
        public static void main(String[] args) {
            double[] dNum = new double[3];
    
            System.out.println("Input values for your array");
            for (int i = 0; i < dNum.length; i++) {
                double num = objScan.nextDouble();
                if (contains(dNum, num) == false) {
                    dNum[i] = num;
                }
            }
            double sum = 0;
            for (int i = 0; i < dNum.length; i++) {
                sum += dNum[i];
            }
            System.out.println(sum);
    
        }
    
        public static boolean contains(double[] d, double num) {
            for (int i = 0; i < d.length; i++) {
                if (d[i] == num) {
                    return true;
                }
            }
            return false;
        }