gpt4 book ai didi

java - 开始在数组上使用 java。尝试对重复的金额进行分组

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:31 24 4
gpt4 key购买 nike

我正在尝试查看包含金额的姓名列表。

一个数组包含该人的姓名,另一个数组包含该人给出的金额,即 john, 55 sally 40 john 33 sarah 55。

我的目标是对相似的名字进行总计并打印出该人的姓名以及所给予的总金额。

约翰给出了两次,所以他的总数应该是 88。但是我的总数是正确的,但我的程序打印了两次名字。所以 john 88 打印了两次......我知道这很可能是因为我把它放在第一个 for 循环中,它迭代了数组的整个长度。

但我不确定如何解决这个问题?

import java.util.*;

public class chapterfive {
public static void main (String[]args) {
Scanner in = new Scanner (System.in);
String[]names = new String[4];
int[] scores = new int[4];
for (int i = 0; i<names.length; i++) {
names[i] = in.next();
scores[i] = in.nextInt();
}
int amount = 0;
String firstname = "";

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

if (names[j].equals(names[i]))
amount += scores[j];
}

System.out.println(names[i] + " " + amount);
amount = 0;
}
}
}

最佳答案

你可以看到他们有一个类似 Name -> Score 的关系,所以如果你认为更抽象的话,这是一个带有 Key (Name) 和 Value (Score) 的字典,所以你可以使用另一个数据结构,比如 Map 或者你可以使用一个数组并创建一个类 Person ,拥有 arrayOrderer ,当你添加一个新人时检查该人是否存在于数组中..

示例:

Map <String , Integer> people = new HashMap<>();
for (int i=0; i<lengthYouWant; i++)
{
String name=in.next();
int score=in.nextInt();

if(people.contains(name)){
score= people.get(name)+score;
}
people.put(name,score);
}

关于java - 开始在数组上使用 java。尝试对重复的金额进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17333660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com