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”的原因。所以我想先拿,然后转换为int或double。这给了我52令我困惑的事。然而,当我直接打印到控制台时,它工作,但只有没有双。这没用,因为我需要在其他地方使用它。那么这里发生了什么?尝试解析字符串a和int或double的部分是否更好?是否可以在不使用解析的情况下操作字符串中的数字?是否有可以处理虚数的方法,即“e ^ pi * i = 1”?
答案 0 :(得分:2)
字符串是一系列符号,例如字母,标点符号和数字,称为字符。每个字符都与一个数字相关联。一种常见的方法是使用所谓的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))
如果要允许具有多个数字或小数点的数字,则需要使用更复杂的解析方法。
答案 1 :(得分:0)
你得到52,因为'4'
的ascii值是52。
System.out.println("(4 + 4i)".charAt(1) == '4'); // '4' == '4'
System.out.println((int) '4'); // <-- 52
如果您想将char
转换为&#39; int
值,您需要检查它是否在预期范围内,然后解析它。您可以从值中减去'0'
,或使用Character.digit
- 如
char c = '4';
if (c >= '0' && c <= '9') {
System.out.println((int) (c - '0'));
System.out.println(Character.digit(c, 10));
}
最后,System#out
是PrintStream
,它提供了重写方法来编写int
(或char
或String
,或者double
等。)