爪哇 - 转换为大写,而无需使用toUppercase()(Java - Convert lower

2019-09-01 07:17发布

我试图创建一个简短的程序,将转换被大写,以(在命令行输入)小写所有字母。

下面编译但不给我,我期待的结果。 什么是这样做的原因?

例如)的java toLowerCase香蕉 - >给香蕉的输出

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

            toLowerCase(args[0]);
        }

        public static void toLowerCase(String a){

            for (int i = 0; i< a.length(); i++){

                char aChar = a.charAt(i);
                if (65 <= aChar && aChar<=90){
                    aChar = (char)( (aChar + 32) ); 
                }

                System.out.print(a);
            }
         }   
    }

Answer 1:

看起来像功课对我来说,只是一个提示。 您打印字符串a ,而你正在修改的char类型aChar ,它不是修改原始字符串a 。 (记住字符串是不可变的)。



Answer 2:

要打印的String a ,而不需要修改它。 您可以在回路中直接打印字符如下:

public class toLowerCase
{
    public static void main(String[] args)
    {
        toLowerCase(args[0]);
    }

    public static void toLowerCase(String a)
    {
        for (int i = 0; i< a.length(); i++)
        {
            char aChar = a.charAt(i);
            if (65 <= aChar && aChar<=90)
            {
                aChar = (char)( (aChar + 32) ); 
            }
            System.out.print(aChar);
         }
     }
}    


Answer 3:

看起来你靠近。 :)

对于初学者...

char aChar = a.charAt(i);

“一”是一个字符串数组,所以我相信你会想遍历每个元素

char aChar = a[i].charAt(0);

它也好像你要的不是产品,其最初的变量通过“一”返回修改变量的值。

System.out.print(aChar);

System.out.print(a);

希望可以帮助你。



Answer 4:

编写这些代码的清洁方法是

public static void printLowerCase(String a){
    for(char ch: a.toCharArray()) {
       if(ch >= 'A' && ch <= 'Z')
          ch += 'a' - 'A';
       System.out.print(ch);
    }
}

注:在任何其他范围内,这将不是大写字符工作。 (有他们的1000个)



Answer 5:

/**
     * Method will convert the Lowercase to uppercase
     * if input is null, null will be returned
     * @param input
     * @return
     */
    public static String toUpperCase(String input){
            if(input == null){
                return input;
            }
            StringBuilder builder = new StringBuilder();
            for(int i=0;i<input.length();i++){
                char stringChar = input.charAt(i);

                if(92 <= stringChar && stringChar <=122){
                    stringChar = (char)( (stringChar - 32) ); 
                    builder.append(stringChar);
                }
                else if (65 <= stringChar && stringChar<=90)
                {
                    builder.append(stringChar);
                }
            }
            if(builder.length() ==0){
                builder.append(input);
            }
            return builder.toString();
        }


Answer 6:

public static void toLowerCase(String a){

    String newStr = "";

    for (int i = 0; i< a.length(); i++){

        char aChar = a.charAt(i);
        if (65 <= aChar && aChar<=90){
            aChar = (char)( (aChar + 32) ); 
        }
        newStr = newStr + aChar;    
    }
    System.out.println(newStr);
}

您应该打印newStr之外循环。 你试图将其打印在循环中



Answer 7:

public class Changecase
{
    static int i;

    static void changecase(String s)
    {
        for(i=0;i<s.length();i++)
        {
            int ch=s.charAt(i);
            if(ch>64&&ch<91)
            {
                ch=ch+32;
                System.out.print( (char) ch);
            }
            else if(ch>96&&ch<123)
            {
                ch=ch-32;
                System.out.print( (char) ch);
            }
            if(ch==32)
            System.out.print(" ");
        }
    }

    public static void main (String args[])
    {

        System.out.println("Original String is : ");
        System.out.println("Alive is awesome ");
        Changecase.changecase("Alive is awesome ");

    }
}


Answer 8:

public class MyClass
{
    private String txt;
    private char lower;
    public MyClass(String txt)
    {
        this.txt = txt;
    }
    public void print()
    {
        for(int i=0;i<txt.length();i++)
        {
            if('A' <= txt.charAt(i) && txt.charAt(i) <= 'Z')
            {
                lower = (char)(txt.charAt(i) + 32);
                System.out.print(lower);
            }
            else
            {
                lower = txt.charAt(i);
                System.out.print(lower);
            }
        }
    }
    public static void main(String[] args)
    {
        MyClass mc = new MyClass("BaNaNa");
        mc.print();
    }
}

对不起已经很晚了现场,但是这应该解决这个问题。 一个else条件,因为当它不是零它完全抛弃字母。



Answer 9:

如果有人需要,而不MagicNumbers和清晰的代码少如下可能的转换是我的解决方案:

final char[] charArray = new char[string.length()];
for (int i = 0; i < string.length(); i++) {
    char c = string.charAt(i);
    charArray[i] = Character.isLowerCase(c) ? Character.toUpperCase(c) : Character.toLowerCase(c);
}
String.valueOf(charArray);


Answer 10:

import java.util.Scanner;
public class LowerToUpperC {

    public static void main(String[] args) {

         char ch;
            int temp;
            Scanner scan = new Scanner(System.in);

            System.out.print("Enter a Character in Lowercase : ");
            ch = scan.next().charAt(0);

            temp = (int) ch;
            temp = temp - 32;
            ch = (char) temp;

            System.out.print("Equivalent Character in Uppercase = " +ch);

    }

}


文章来源: Java - Convert lower to upper case without using toUppercase()