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()
,具体取决于您是否需要 int
或 double
:
int c = Integer.valueOf(a.charAt(g))
如果您想允许具有多个数字或小数点的数字,则需要使用更复杂的解析方法。
关于java - 为什么 charAt 的工作方式不同,具体取决于打印的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46922494/