我正在尝试解决此问题: http : //www.cstutoringcenter.com/problems/problems.php?id=4 ,但我无法弄清楚为什么我的代码无法解决此问题,我的意思是在“ for”中我该如何可以乘以字母? 我怎么了 它总是告诉7,但我想将所有字母都乘以。 我希望你能帮助我。

public class ejercicio3 {

    public static void main(String args[]) {

        Map<Character, Integer> telefono = new HashMap<Character, Integer>();

        telefono.put('A', 2);
        telefono.put('B', 2);
        telefono.put('C', 2);
        telefono.put('D', 3);
        telefono.put('E', 3);
        telefono.put('F', 3);
        telefono.put('G', 4);
        telefono.put('H', 4);
        telefono.put('I', 4);
        telefono.put('J', 5);
        telefono.put('K', 5);
        telefono.put('L', 5);
        telefono.put('M', 6);
        telefono.put('N', 6);
        telefono.put('O', 6);
        telefono.put('P', 7);
        telefono.put('R', 7);
        telefono.put('S', 7);
        telefono.put('T', 8);
        telefono.put('U', 8);
        telefono.put('V', 8);
        telefono.put('W', 9);
        telefono.put('X', 9);
        telefono.put('Y', 9);

        String mensaje = "Practice";
        int producto = 1;

        for (char c : mensaje.toCharArray()) {    
            if (telefono.containsKey(c)) {
                producto = telefono.get(c) * producto;
                System.out.println(producto);
            }
        }
    }
}

#1楼 票数:4

首先将您的字符串转换为全部大写!

它只会找到第一个字符“ P”,并给出正确答案7。

尝试更改:

for (char c : mensaje.toCharArray()) {

for (char c : mensaje.toUpperCase().toCharArray()) {

#2楼 票数:2

解决了Adrian Mouat的答案中建议的区分大小写问题后,问题仍然在于,如果字符串较长,则整数很快就会溢出。 使用long代替:

long producto = 1;

(此后,例如,“编程挑战很有趣”将产生208129028102553600。)

编辑 :或,如WineSoaked正确指出的那样,请使用BigInteger来使此支持任意长字符串(然后只有JVM可用的RAM才是限制)。 但是,正如我们所看到的,对于这个特殊的难题,足够long就足够了。 :-)

#3楼 票数:1

看起来像是区分大小写的问题。 也就是说,“ P”是在地图中实际找到的唯一字符。

如果要使用大小写混合的字符串,请执行mensaje.toUpperCase().toCharArray()或向地图添加小写字母等价字母,例如telefono.put('a',2);

  ask by amveg translate from so

未解决问题?本站智能推荐:

2回复

地图中的增量值(JAVA)

我在此家庭作业中遇到问题。 我可以处理语法,但不能处理逻辑。 你能给我一些提示吗? 我想要实现的是,add方法将通过使用gainAmount方法来增加产品数量。 现在,每当我调用该方法时,它将值的值重置为“ 1”。 使事情变得复杂的是,除已使用过的之外,我不允许使用任何其他私有变量
7回复

在Java中可以更改地图中的值

在Java中,您可以将地图的值更改为字符串,双精度或整数。 例如,如果我所有的键都是名称,但是我的值可以是数字,名称或小数。 输出将是这样的(粗体是用户输入)
8回复

在地图中使用列表(Java)

我正在使用HashMap,其中我使用ArrayList作为值。 像这样: 我正在尝试创建一个方法,我可以迭代这些值来查看键(电影)是否已经存在。 如果是,我想在分配给特定键(电影)的列表中添加新值(等级)。 像这样的东西: 最终我不能打印一张地图,这些地图会在将电影及其
2回复

Java:在地图中找到空键:

我不知道为什么不能和我一起工作。 我在地图上有一个空钥匙,但是我无法抓住它们。 编辑:我进行了价值测试: 结果是: 我认为这个钥匙真是个好东西)
4回复

以LIFO顺序在Java地图中存储条目

我正在尝试实现像LinkedHashMap这样的东西,条目添加在顶部,而不是在底部(LIFO)。 我不想在事后对它进行排序,只是寻找一个允许这种情况的实现。 谢谢。
2回复

如何从java地图中获取价值:地图 >?

如何从java地图中获取“值”:
1回复

Java中未使用的异常并从地图中删除对象

我用Java做过游戏。 尽管在Eclipse中可以正常工作,但是当打包到jar中时,出现了一个问题,即地图中的对象永远不会被破坏。 为了检查是否有异常,我从命令行启动了它,而java向我说明了以下异常。 但是我没有使用任何zip文件,而且wav-player在游戏中也可以正常工作。
1回复

是否有一个只有一个条目的Java地图,并允许从地图中获取值?

对不起,如果我的问题有点令人困惑,那就很难说。 我想要实现一个集合(有点像地图但是对于单个值而不是对)在搜索其内容时执行散列。 我正在努力使我的程序真正有效。 目前,该程序使用HashMap并将数据库中的主键添加到它两次: 我可以使用哈希或地图来避免两次添加密钥吗? 由于它是数据