【问题标题】:Why do we write A.charAt(i) but not A.charAt[i]? And why do we write " - 'A' "?为什么我们写 A.charAt(i) 而不是 A.charAt[i]?为什么我们写“ - 'A'”?
【发布时间】:2014-11-28 12:41:26
【问题描述】:
public static int get(String A) // it is a method
{
        int count = 1;
        for (int i = 0; i < A.length(); i++) // So A reads line (any word, for example "Car"), so I understand that length will be 3 and that java will check all the characters.

        {
            int num = (A.charAt(i) - 'A') + 1;
            count *= num;
        }
        return count;
    }

【问题讨论】:

  • 因为String#charAt() 是一个方法,而不是一个数组实例。你写“A”来表示类型char,而不是“A”,它是String
  • @barakmanos 如果拼写困扰您,只需编辑它。然后将其余显然是答案的评论放在答案部分。
  • @weston:这并没有真正困扰我,我只是认为如果我发表评论而不是编辑,OP 会注意到它。至于回答它,这里已经有大约 10 个答案(如预期的那样)。谢谢。

标签: java charat


【解决方案1】:

A.charAt(i),因为charAt是一个函数,而不是一个数组。

您编写A.charAt(i) - 'A' 来计算Ai:th 字符与字符'A' 之间的差异。

【讨论】:

    【解决方案2】:

    String 类是 immutable or value object。它不会让您直接访问组成字符串的字符,主要是出于性能原因,但也因为它有助于避免一整类错误。

    这就是你不能通过[] 使用数组访问的原因。您可以调用A.getChars(),但这会创建底层字符数组的副本

    char 是一个字符的代码。例如'A' == 65。见this table。如果A.charAt(1) 返回'F'(或70),那么'F' - 'A' 给你5。+1 给你6。

    所以上面的代码把字母变成了数字。您会经常看到的一种模式是 charAt(i) - '0' 将字符串转换为数字。

    但是上面的代码在这方面很奇怪,因为count *= num 为输入产生了一个相当随机的结果。要将字母转换为以 26 为基数的数字,应为 count = count * 26 + num

    【讨论】:

      【解决方案3】:

      A.charAt(i)是字符串的方法,你也可以A[i]直接访问相同的位置。

      当您对字符进行操作(+ 或 -)时,您会得到一个 int

      【讨论】:

        【解决方案4】:

        Java API for charAt() function

        charAt() 是 java 方法,不是数组

        返回指定索引处的字符值。

        语法:

        这里是这个方法的语法:

        public char charAt(int index);
        

        【讨论】:

          【解决方案5】:

          因为charAt() 是一种从给定字符串返回字符而不是数组的方法。字符写'A'。字符串写成"A"

          【讨论】:

            【解决方案6】:

            因为charAt 是字符串中的一个方法并且它接受索引。 String 内部维护着 char 数组,它对我们来说都是隐藏的,因此你有一个方法而不是数组本身。

            -'A' 的原因是用户想要将该字符转换为整数。因此,例如你的角色是'B',用户想用ascii value of 'B' which is 66 - ascii value of 'A' which 65将它转换成int

            num = 66 - 65 + 1
            

            并做进一步处理。

            【讨论】:

              【解决方案7】:

              因为 charAt() 是 java 中用于 string it 的方法,它返回一个字符。 'A' 指的是 char 类型,而我们将 "A" 用于字符串类型 http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#charAt%28int%29

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-06-06
                • 1970-01-01
                • 1970-01-01
                • 2023-03-17
                • 2012-05-10
                • 2016-01-23
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多