不使用toUpperCase方法将java字符串转换为大写

时间:2016-11-10 09:45:55

标签: java string char int

到目前为止我有什么

public String toUpperCase(String str)
{
    int strLength = str.length();
    String word = "";
    while (strLength > 0)
    {
        char newStr = str.charAt(strLength);
        Character.toUpperCase(newStr);
        Character.toString(newStr);
        word += newStr;
        strLength--;
    }
    return word;
}

我完全失去了,我的代码可能不合逻辑。一些帮助将不胜感激

4 个答案:

答案 0 :(得分:1)

EventUser函数返回一个字符。您必须在char字面值中保存该值。

另外,你应该在Character.toUpperCase()开始循环,否则会抛出strLength - 1错误。并且,您应该迭代到索引StringIndexOutOfBounds。目前,您从0迭代到strLength

最后,由于你是在相反的方向迭代,你应该注意你追加字符的方式。

1

由于考虑到函数不存在而要求您编写函数,因此不使用public String toUpperCase(String str) { int strLength = str.length(); String word = ""; while (--strLength >= 0) { char newChar = str.charAt(strLength); newChar = Character.toUpperCase(newChar); word = newChar + word; //appending in reverse order } return word; } 方法就不那么讽刺了。即使我已经使用过它。在这种情况下,您可以查看@Sam的建议。以上代码将进行此修改:

Character.toUpperCase()

答案 1 :(得分:1)

要在不使用toUpperCase()的情况下将字符串更改为大写,请检查以下代码。

if(ch>96 && ch<123)
{
            ch=ch-32;
            System.out.print( (char) ch);
}

检查char小写字母是否小,然后从32

减去它

答案 2 :(得分:1)

您应该查看ASCII表。

char是整数,&#39; A&#39;到了&#39; Z&#39;是65到90和&#39; a&#39;到&#39; z&#39;是97到122。

所以,如果你在&#39; a&#39;之间有一个字符。和&#39; z&#39;你想要减去差异,并且“A&#39; A&#39;和&#39; a&#39;到你的角色。

&#39;一个&#39; - (&#39; a&#39; - &#39; A&#39;)=&#39; A&#39;

&#39; C&#39; - (&#39; a&#39; - &#39; A&#39;)=&#39; C&#39;

所以你需要迭代你的字符串并对每个字符进行数学运算。

public static char myUpper(char c){
    if (c >= 'a' || c <= 'z'){
        c = (char) (c - ('a' - 'A'));
    }
        return c;
}

答案 3 :(得分:0)

我个人会这样做。

String newsentence =""; String question="HeLlo";
    String caps = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String lowerCase = "abcdefghijklmnopqrstuvwxyz";

    for(int i=0;i<caps.length();i++) {
       for(int j=0;j<caps.length();j++) {
    if(question.equals(lowerCase.subString(j,j+1)){ newsentence+= (caps.subString(i,i+1); }

}} System.out.print(newsentence);

这就是我要做的。