繁体   English   中英

将字符串转换为Char然后转换为Int

[英]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对象也不Characterchar 转换只是试图欺骗编译器,它不会更改实际的基础对象。

如果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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM