[英]String converting to Char and then to Int
我正在为学校编写回文函数,该函数将使用字符串参数并删除所有标点符号。 就我的课程而言,我必须使用substring()方法。
我的代码基本上在string参数中接受每个字符的子字符串,并将其转换为char,然后转换为int。 然后,它检查该整数是否在az或AZ的ASCII数字之内,如果是,则将该子字符串附加到空白字符串(s2)。
现在我的主要问题是,当我尝试编译程序时,出现一个错误,指出无法将子字符串转换为char。 有什么想法吗?
public Palindrome(String s)
{
for(int i = 0; i < s.length(); i++)
{
// checks if the character is an uppercase letter
if((int) Character.valueOf(s.substring(i, i + 1)) >= 65)
if((int) Character.valueOf(s.substring(i, i + 1)) <= 90)
s2 += s.substring(i, i+1);
// checks if the character is a lowercase letter
if((int) Character.valueOf(s.substring(i, i + 1)) >= 97)
if((int) Character.valueOf(s.substring(i, i + 1)) <= 122)
s2 += s.substring(i, i+1);
}
}
Character#valueOf(char c)方法适用于字符,并且如JavaDoc所说,子字符串()
public String substring()
方法返回String,因此您不能在此处使用Character#valueOf
方法
即使String
的长度为1, String
对象也不是Character
或char
。 转换只是试图欺骗编译器,它不会更改实际的基础对象。
如果String#charAt()
被禁止,则可以使用String#toCharArray()
返回一个char[]
(在您的情况下,长度为1)。 例如
char[] myChar = s.substring(i, i + 1);
// myChar[0] contains the character
然后测试一下是否是字母,您可以使用
Character.isLetter(myChar[0]);
当心当你投
(int)Character.valueOf(...)
由valueOf()
返回的Character
对象不是char
。 它实际上将起作用,因为编译器会将一些Character
拆箱到char
。
如果要使用ASCII代码而不是Character#isLetter()
,则可以执行以下操作:
char[] myChar = s.substring(i, i + 1);
int theCharAsInt = (int)myChar[0];
// proceed to test the range
因为可以将本机char
值读取为本机int
值。
int codeA = (int)'A'; // codeA == 65
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.