尝试在HashMap中添加整数但不起作用
问题描述:
我是HashMaps
的新成员,在帮助我理解如何在地图中添加和打印整数。但是,不要得到我想要的东西,我会得到一些奇怪的和不同的东西,我不知道如何解决。尝试在HashMap中添加整数但不起作用
输出
Rick Grimes
Rick Grimes rescued Carl 100pts!
Rick Grimes rescued Carl 100pts!Rick Grimes rescued Michone 50pts!
Characters rescued: Carl, Michone Total points: 10050
正如你可能会注意到,总积分仅仅是一个分数的组合。这就是我要
所需的输出
Rick Grimes
Rick Grimes rescued Carl 100pts!
Rick Grimes rescued Michone 50pts!
Characters rescued: Carl, Michone Total points: 150
另外一个问题,你可能在我的输出注意什么是line 3
重复第一救援line 2
但首先我希望把重点放在第一个问题。
这里是我的代码
GameDriver.java
import java.io.*;
import java.util.*;
import java.awt.*;
public class GameDriver {
public static void main(String[] args) throws FileNotFoundException {
Hero N = new Cop();
String s;
File f = new File (args[0]);
Scanner input = new Scanner(f);
while (input.hasNext()) {
s = input.next();
if (s.equalsIgnoreCase("h")) {
System.out.println(N.getHeroName());
}
if (s.equalsIgnoreCase("r")) {
String cn = input.next();
int pts = input.nextInt();
N.newMap.put(cn, pts);
System.out.println(N.rescue());
}
if (s.equalsIgnoreCase("v")) {
System.out.println(N.view());
}
}
}
}
求和发生在这个类
Hero.java
import java.util.*;
import java.io.*;
import java.awt.*;
public abstract class Hero extends Character
{
private String heroname1;
public Hero() {
heroname1 = "Rick Grimes"; //the default player name
}
HashMap<String, Integer> newMap = new HashMap<String, Integer>();
public Hero(String newhero) {
if (newhero.length() > 0) {
heroname1 = newhero;
} else { heroname1 = "Rick Grimes"; } //defaulted as protagonist
}
public String getHeroName() {
return heroname1; //return the name
}
public String rescue() { //class to rescue people or things
String out = "".toString();
for(String _key : newMap.keySet()) {
out += heroname1 + " rescued " + _key + " " + newMap.get(_key) +!
}
return out;
}
public String toString() { //print
return heroname1;
}
public String view() {
Set<String> names = newMap.keySet();
StringBuilder sb = new StringBuilder("Characters rescued: ");
int i = 0;
for (String name : names) {
if (i == 0) {
sb.append(name);
i++;
} else {
sb.append(", ");
sb.append(name);
}
}
String printNames = sb.toString();
Collection<Integer> points = newMap.values();
StringBuilder sp = new StringBuilder("Total points: ");
int sum = 0;
for (Integer value : points) {
sum += value;
sp.append(value);
}
String printPoints = sp.toString();
return printNames + " " + printPoints ;
}
}
我是什么做错了?请要求澄清! 谢谢!
答
你只是附加的文字在这里:
StringBuilder sp = new StringBuilder("Total points: ");
int sum = 0;
for (Integer value : points) {
sum += value;
sp.append(value);//you're wrong here.
}
您应变量之和相加后追加。
StringBuilder sp = new StringBuilder("Total points: ");
int sum = 0;
for (Integer value : points) {
sum += value;
}
sp.append(sum);
此外,附加值应该是'sum'而不是'value';
+0
啊完美谢谢你。我能不能多说一点,看看我的代码,并告诉我为什么在我的输出中重复第一次救援?没关系,如果你不这样做,我也无法弄清楚 – Junikin 2014-12-19 08:09:09
在人们解决了您问到的问题后,请勿修改您的问题以更改问题。单独提出一个新问题,并保留原来的问题。 – khelwood 2014-12-19 08:17:30
好的。我觉得这将是皱眉 – Junikin 2014-12-19 08:19:58