如何检查一个数组是否包含相同的值?[已解决]

时间:2019-07-16 02:18:44

标签: java arrays

我正在学习Java数组,并陷入了这个问题。 我想添加num的值,如果名称相等则删除重复的名称。 在此先感谢您。 这是我的一些代码:

public static void main(String[]Args){
    Scanner input = new Scanner(System.in);
    int n;
    System.out.println("Input n= ");
    n=input.nextInt();
    String name[] = new String[n];
    int num[] = new int[n];

    for (int i = 0; i<n; i++){
        System.out.println("Input name= ");
        name[i]= input.next();
        System.out.println("Input num= ");
        num[i]=input.nextInt();
    }

for(int i=0;i<n;i++){       
System.out.println(name[i] + " " + num[i]);

    }

我希望结果是:

Example1 5

Example2 6

如果我输入n = 3

name [0] =“ Example1”

name [1] =“ Example2”

name [2] =“ Example1”

num [0] = 2

num [1] = 6

num [2] = 3

实际结果是:

Example1 2

Example2 6

Example1 3

2 个答案:

答案 0 :(得分:1)

请记住,数组从0开始。此解决方案不会清除数组,因此您需要修改其中的一些以将两个数组都向左移动。

int n = 3;
    String[] name = new String[n];
    int[] num= new int[n];

    name[0] = "Example1";
    name[1] = "Example2";
    name[2] = "Example1";
    num[0] = 2;
    num[1] = 6;
    num[2] = 3;


    for (int i = 0; i < name.length; i++) {
        for (int j = i+1; j < name.length; j++) {
            if (name[i].equals(name[j])) {
                num[i] += num[j];
                num[j] = 0;
                name[j] = null;
            }
        }
    }


    for(int i=0;i<n;i++){
        if (name[i] != null) {
            System.out.println(name[i] + " " + num[i]);
        }
    }

输出:

  

Example1 5

     

Example2 6

答案 1 :(得分:0)

以下程序完成了您所追求的目标:

class Main {
  public static void main(String[] args) {
    int n = 2;
    String[] name = {"Example1", "Example2"};
    int[] num = {5, 6};

    //this is a comment

    for (int i = 0; i < n; i++){
      System.out.println(name[i] + "  " + num[i]);
    }

  }
}

您需要为numname声明一个数组,并且还需要将n的值更改为2,以便保留循环格式并仅打印两个元素。