【问题标题】:How to add a numerical value for a char in Java如何在Java中为char添加数值
【发布时间】:2016-12-18 11:24:44
【问题描述】:

我有这段代码,我想在其中为 char 变量添加值 97,但根据 ASCII 表获得字母“b”的最终数字 98,输出为 205。

我的代码有什么问题?

public class MyTest {

    public static void main(String[] args) {

        char result;
        String input = "blablab";

        result = charCounter(input);

    }

    private static char charCounter(String input) {

        int[] array = new int[26];

        for (int i = 0; i < input.length(); i++) {
            char ch = input.charAt(i);

            array[ch - 97]++;

        }

        int max = array[0];
        for (int i = 1; i < array.length; i++) {

            if (array[i] > max) {
                max = array[i];
                char frequent = input.charAt(i);

                System.out.println(frequent + 97);

            }

        }

        return 45;
    }

}

感谢您的帮助。

【问题讨论】:

  • 在您的第二个for 循环中,是什么让您认为i 应该是输入字符串的索引?例如,如果我输入 f,我输入的是一个字符的字符串。但是array 有 26 个条目,并且您的循环远远超过了那个点,所以input.charAt(i) 将失败。
  • 因为我得到了更频繁的字母'l'
  • 不,你没有。更仔细地思考逻辑。如果输入字符串只是f,甚至可以在纸上绘制数组和输入字符串以了解i 在第二个循环中会做什么。
  • @T.J.Crowder:哦哦,对了,输出是:String index out of range: 5
  • 更多的字母应该是 'b' 三次而不是 'I' 两次。

标签: java char ascii


【解决方案1】:

替换

System.out.println(frequent + 97);

System.out.println((char)(i + 97));

因为

char + Integer = Integer

所以你必须把它转换成char 对应字符ascii应该是

i + 97

而不是

frequent + 97

【讨论】:

  • Integer => int
  • @cainiaofei:听起来不错,现在代码可以正常工作了。通过这种方式,我什至解决了单个字母作为输入的问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 2023-03-25
  • 2018-06-13
  • 2016-03-07
  • 2017-03-21
  • 1970-01-01
  • 2018-11-21
相关资源
最近更新 更多