Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有toUppercase方法的情况下获取字符串中的大写而不是小写。附后_Java_Methods_Char_Uppercase_Lowercase - Fatal编程技术网

Java 如何在没有toUppercase方法的情况下获取字符串中的大写而不是小写。附后

Java 如何在没有toUppercase方法的情况下获取字符串中的大写而不是小写。附后,java,methods,char,uppercase,lowercase,Java,Methods,Char,Uppercase,Lowercase,如何在没有toUppercase方法的情况下获取字符串中的大写而不是小写,但字符串中的其他符号不应更改 package com.telukhin.hw6; public class Task1 { public static void main(String[] args) { } private static String lowerCase(String s) { for (int i = 0; i < s.length(); i++) {

如何在没有toUppercase方法的情况下获取字符串中的大写而不是小写,但字符串中的其他符号不应更改

   package com.telukhin.hw6;

public class Task1 {
    public static void main(String[] args) {

    } private static String lowerCase(String s) {
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if(ch >= 'a' && ch < 'z') {
                ch = ch - '32';
            }


        }
    }
}
package com.telukhin.hw6;
公共课任务1{
公共静态void main(字符串[]args){
}私有静态字符串小写(字符串s){
对于(int i=0;i='a'&&ch<'z'){
ch=ch-‘32’;
}
}
}
}
  • 小写字符a到z的ASCII值范围为97到122
  • 大写字符A到Z的ASCII值范围为65到92
  • 对于转换,我们从输入字符的ASCII值中添加32
在if语句中添加以下内容:

ch=ch+32


您可以按如下方式进行操作:

public class Task1 {
    public static void main(String[] args) {
        System.out.println(lowerCase("HELLO"));
    }

    private static String lowerCase(String s) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (ch >= 65 && ch <= 90) 
                sb.append((char)(ch+32));           
            else
                sb.append((char)ch);
        }
        return sb.toString();
    }
}
请查收参考资料

更新:添加将
字符串
转换为大写的方法

public class Task1 {
    public static void main(String[] args) {
        System.out.println(lowerCase("HELLO"));
        System.out.println(upperCase("hello"));
    }

    private static String lowerCase(String s) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (ch >= 65 && ch <= 90) //ASCII value of 'A'is 65 and that of 'Z' is 90
                sb.append((char)(ch+32));           
            else
                sb.append((char)ch);
        }
        return sb.toString();
    }
    private static String upperCase(String s) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (ch >= 97 && ch <= 122) //ASCII value of 'a'is 97 and that of 'z' is 122
                sb.append((char)(ch-32));           
            else
                sb.append((char)ch);
        }
        return sb.toString();
    }
}

假设这不是家庭作业,不使用toUppercase的限制暗示了这一点,您可以这样做:

public class Main
{
    public static void main(String[] argv)
    {
        final String upper = toUpperCase("HELLO1234@world.CoM");

        System.out.println(upper);
    }

    private static String toUpperCase(final String s)
    {
        final StringBuilder builder = new StringBuilder();

        for(final char c : s.toCharArray())
        {
            final char upper = Character.toUpperCase(c);

            builder.append(upper);
        }

        return builder.toString();
    }
}

这将处理非ascii字符。或者,您仍然可以使用65位和90位来代替Character.toUpperCase,再举一个例子。这将字符串转换为用于处理的字符数组,然后使用结果创建一个新字符串。它似乎比使用charAt、StringBuilder等更方便

与许多其他答案一样,仅对同样出现在ASCII中的26个字母有效

class Foo {

    public static String upcase(String str) {
        char[] arr = str.toCharArray();
        for (int k=0; k<arr.length; k++) {
            if (arr[k] >= 'a' && arr[k] <= 'z') {
                arr[k] -= ('a'-'A');
            }
        }
        return new String(arr);
    }

    public static void main(String... args) {
        String test = "a9z A?Z";
        System.out.println(test + " ==> " + upcase(test));
    }
}
class-Foo{
公共静态字符串upcase(字符串str){
char[]arr=str.toCharArray();

对于(int k=0;k='a'&&arr[k]提示:“A”的int值是多少?A=65和A 97的int值是多少?所以要把97变成65,你需要减去32。所有小写字母都是一样的。如果你从任何小写字母中减去“A”-“A”,会发生什么?泰勒,我试过了,但我不明白如何更改值写“A”和“Z”比写65和90更清楚。但是这个例子转换成小写,在我看来,OP要求转换成大写。奇怪的是他还是接受了。加上32将“A”转换成“A”,将“A”转换成某个C1控制字符。你需要减去32。
public class Main
{
    public static void main(String[] argv)
    {
        final String upper = toUpperCase("HELLO1234@world.CoM");

        System.out.println(upper);
    }

    private static String toUpperCase(final String s)
    {
        final StringBuilder builder = new StringBuilder();

        for(final char c : s.toCharArray())
        {
            final char upper = Character.toUpperCase(c);

            builder.append(upper);
        }

        return builder.toString();
    }
}
class Foo {

    public static String upcase(String str) {
        char[] arr = str.toCharArray();
        for (int k=0; k<arr.length; k++) {
            if (arr[k] >= 'a' && arr[k] <= 'z') {
                arr[k] -= ('a'-'A');
            }
        }
        return new String(arr);
    }

    public static void main(String... args) {
        String test = "a9z A?Z";
        System.out.println(test + " ==> " + upcase(test));
    }
}