Character.digit("7.00".charAt(i++),radix) 7报错
时间: 2024-03-05 12:49:49 浏览: 114
`Character.digit(char ch, int radix)` 方法的第一个参数必须是表示有效数字的字符,例如 '0' 到 '9','a' 到 'z' 或 'A' 到 'Z' 等。
而在 `"7.00".charAt(i++)` 中,i 的初始值为 0,执行完该语句后,i 的值变为 1,即 `"7.00".charAt(0)` 返回字符 '7',而不是有效数字。
因此,`Character.digit("7.00".charAt(i++), radix)` 的返回值为 -1,表示字符 '7' 不是指定基数 radix 中的有效数字。
如果要将字符串 "7.00" 中的数字转换为整数,可以使用 Integer.parseInt(String s) 方法,例如:
```
int num = Integer.parseInt("7.00");
```
相关问题
Character.digit("7.00".charAt(i++),radix) 报错
`Character.digit(char ch, int radix)` 方法的第一个参数是一个字符类型的参数,而 `"7.00".charAt(i++)` 返回的是一个字符串类型的参数。
因此,应该将 `"7.00".charAt(i++)` 改为 `"7.00".charAt(i)`,即:
```
Character.digit("7.00".charAt(i), radix)
```
另外,还需要确保 i 的值在正确的范围内,即 `i >= 0 && i < "7.00".length()`。
(byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16))请举例说明这段代码
这段代码将一个包含两个十六进制字符的字符串转换为一个字节(byte)类型的值。具体解释如下:
- s.charAt(i) 表示取出字符串 s 中的第 i 个字符(从左往右数,第一个字符的下标为 0)。
- Character.digit(c, 16) 表示将字符 c 转换为十六进制数字,如果无法转换则返回 -1。这里的 16 表示转换为十六进制。
- (Character.digit(s.charAt(i), 16) << 4) 表示将第 i 个字符转换为十六进制数字后左移 4 位,相当于乘以 16。
- Character.digit(s.charAt(i+1), 16) 表示将第 i+1 个字符转换为十六进制数字。
- (Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i+1), 16) 表示将两个十六进制数字合并成一个十进制数。
- (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i+1), 16)) 表示将前面得到的十进制数强制转换为 byte 类型,并赋值给一个变量。
举例来说,如果 s 的值为 "1F",则代码执行后得到的结果为 31,即十六进制数 1F 对应的十进制数。
阅读全文