java - 为什么 charAt 的工作方式不同,具体取决于打印的数据类型

标签 java char primitive charat

public class MyClass 
{
    public static void main(String args[]) 
    {
        String a = "(4 + 4i)";
        String b = "(2 + 3i)";
        int g = 1;
        int c = a.charAt( g ); // sets c to 52
        System.out.println( c ); // prints 52
        System.out.println( (double) a.charAt( g ) ); // prints 52.0
        System.out.println( a.charAt( g ) ); // prints 4
        System.out.println( 2 * a.charAt( g ) ); // prints 104
    }
}

我试图编写代码来乘以虚数,这就是为什么我在字符串中包含“i”。所以我想先把 and 转换为 int 或 double 。这给了我 52,这让我感到困惑。然而,当我直接打印到控制台时,它可以工作,但只有没有双重。这是没用的,因为我需要在其他地方使用它。那么这是怎么回事呢?尝试将字符串 a 和 int 或 double 的部分解析会更好吗?是否有其他方法可以在不使用解析的情况下操作字符串中的数字?是否有可以处理虚数的方法,即“e^pi * i = 1”?

最佳答案

字符串是一系列符号,例如字母、标点符号和数字,称为字符。每个字符都与一个数字相关联。一种常见的方法是使用 ASCII 字符。在本例中,您会看到字符 '4' 由数字 52 表示。

考虑到这一点,让我们看一下您的一些代码:

int c = a.charAt( g );

该行默默地将字符转换为其数值。我所说的“数值”是指代表字符的数字,而不是数字本身的值。在本例中,字符 '4' 的数值为 52

System.out.println( a.charAt( g ) ); // prints 4

这会打印出字符 '4',而不是int 4。了解数字字符与其整数值之间的区别非常重要。

为了获取数字4以便您可以执行算术运算,您必须解析String。函数Integer.valueOf()对此有很大帮助。

您还应该了解类和对象。例如,您可以创建一个 Complex 类,该类允许您将复数用作具有自己的操作的单个实体。

要获取所需的数值,您需要使用 Integer.valueOf()Double.valueOf(),具体取决于您是否需要 intdouble:

int c = Integer.valueOf(a.charAt(g))

如果您想允许具有多个数字或小数点的数字,则需要使用更复杂的解析方法。

关于java - 为什么 charAt 的工作方式不同,具体取决于打印的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46922494/

相关文章:

c++ - 如何使一个类可分配给基元?或者,如何制作标量类?

protocol-buffers - 在 Google Protocol Buffer 中是否有使用 int32 而不是 sint32 的好时机?

java - SnakeYAML加载无法常规使用的对象

java - Android 到 Java TCP/IP 读取速度太慢

java - 滚动 AlphabetIndexer 时快速滚动拇指消失

java - 程序在重复n个字符的字符串中找出 'a'的个数?

c - 使用字符指针将文本文件逐行存储到字符数组中

java - 向 JAXB 元素添加属性

java - 为什么泛型类可以实现具有不同类型参数的接口(interface)?

c - 如何在C中将字符串(char *)转换为大写或小写