Java 把字母排成一行

Java 把字母排成一行,java,Java,我编写了一段代码,该代码接受字符串参数,并返回通过以下方式更改字符大小写而产生的字符串: 所有元音必须大写(元音为a、e、i、o、u) 所有辅音必须用小写字母 不得更改任何非字母的字符 这是我的密码: public class Simple { public char ChangeCase() { Scanner scanner = new Scanner(System.in); System.out.println("Enter an input St

我编写了一段代码,该代码接受字符串参数,并返回通过以下方式更改字符大小写而产生的字符串:

  • 所有元音必须大写(元音为a、e、i、o、u)
  • 所有辅音必须用小写字母
  • 不得更改任何非字母的字符
  • 这是我的密码:

    public class Simple {
    
        public char ChangeCase() {
            Scanner scanner = new Scanner(System.in);
            System.out.println("Enter an input String: ");
            String inputString = scanner.nextLine();
            //String isVowel = "aeiou";
            char c='\0';
            for (int i = 0; i < inputString.length(); i++) {
                 c = inputString.charAt(i);
                if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'||c=='A'||c=='E'||c=='I'||c=='O'||c=='U') {
                    c = Character.toLowerCase(c);
    
                    System.out.println(c);
                }
                else if (c=='b'||c=='c'||c=='d'||c=='f'||c=='g'||c=='h'||c=='j'||c=='k'||c=='l'||c=='m'||c=='n'||c=='p'||c=='q'||c=='r'||c=='s'||c=='t'||c=='v'||c=='w'||c=='x'||c=='y'||c=='z'||
                   c=='B'||c=='C'||c=='D'||c=='F'||c=='G'||c=='H'||c=='J'||c=='K'||c=='L'||c=='M'||c=='N'||c=='P'||c=='Q'||c=='R'||c=='S'||c=='T'||c=='V'||c=='W'||c=='X'||c=='Y'||c=='Z'){
                    c = inputString.charAt(i);
                    c =Character.toUpperCase(c);
                    System.out.println(c);
                }
               else if(c=='@'||c=='!'||c=='"'||c==' '||c=='!'||c=='"'||c=='#'||c=='$'||c=='%'||c=='&'||c=='('|| c==')'||c=='*'||c=='+'||c==','||c=='-'||c=='.'||c=='/'||c==':'||c==';'||c=='<'||c=='='||c=='>'||c=='?'||c=='['||c==']'||c=='^'||c=='_'||c=='`'||c=='{'||c=='|'||c=='}'||c=='~'||c=='"'){
                    c=inputString.charAt(i);
                    c=c;
                    System.out.println(c);
                }
                else
                   c=c;
    
            }
    
            return c;
    
        }
    }
    
    键入hello时得到的结果:

    Enter an input String: hello
    H
    e
    L
    L
    o
    
    预期成果:

    HeLLo
    

    我应该更改什么以获得预期的结果?

    println
    更改为
    print
    ,因为
    println
    总是会添加额外的行。

    println
    更改为
    print
    ,因为
    println
    总是会添加额外的行。

    println()更改为
    print()
    从输出中省略换行字符。交换
    toUpperCase
    toLowerCase
    ,使代码符合规范要求

    您当前也没有打印其他字符,例如换行符(要求“任何非字母的字符都不得更改”)。 去掉第二个
    else if
    else
    分支,并用

    else {
        System.out.print(c);
    }
    
    还可以去掉额外的
    c=inputString.charAt(i)语句。你只需要第一个

    关于你正在解决的问题,如果我是你,我会使用正则表达式

    无论如何,这里有一个不带正则表达式的Simple.java解决方案,还应用了一些其他改进:

    import java.util.Scanner;
    
    public class Simple {
    
        public void ChangeCase() {
            Scanner scanner = new Scanner(System.in);
            System.out.println("Enter an input String: ");
            String inputString = scanner.nextLine();
            String vowels = "aeiouAEIOU";
            for (char c: inputString.toCharArray()) {
                if (vowels.indexOf(c) != -1) { // found vowel
                    c = Character.toUpperCase(c);
                } else if (Character.isLetter(c)) { // must be a consonant
                    c = Character.toLowerCase(c);
                }
                System.out.print(c);
            }
        }
    }
    
    println()
    更改为
    print()
    ,以从输出中省略换行符。交换
    toUpperCase
    toLowerCase
    ,使代码符合规范要求

    您当前也没有打印其他字符,例如换行符(要求“任何非字母的字符都不得更改”)。 去掉第二个
    else if
    else
    分支,并用

    else {
        System.out.print(c);
    }
    
    还可以去掉额外的
    c=inputString.charAt(i)语句。你只需要第一个

    关于你正在解决的问题,如果我是你,我会使用正则表达式

    无论如何,这里有一个不带正则表达式的Simple.java解决方案,还应用了一些其他改进:

    import java.util.Scanner;
    
    public class Simple {
    
        public void ChangeCase() {
            Scanner scanner = new Scanner(System.in);
            System.out.println("Enter an input String: ");
            String inputString = scanner.nextLine();
            String vowels = "aeiouAEIOU";
            for (char c: inputString.toCharArray()) {
                if (vowels.indexOf(c) != -1) { // found vowel
                    c = Character.toUpperCase(c);
                } else if (Character.isLetter(c)) { // must be a consonant
                    c = Character.toLowerCase(c);
                }
                System.out.print(c);
            }
        }
    }
    

    作为第一个启动器-只需交换

    c = Character.toLowerCase(c);
    
    分别是在if块中执行
    toUpperCase()
    的另一个调用


    您的代码基本上是正确的-您只是在错误的地方更改了案例。因此,只需“交换”这些电话!当然-不要使用
    println()
    -因为这会打印一条“线”——意思是在最后添加一条“新线”

    作为第一个启动者-只需交换

    c = Character.toLowerCase(c);
    
    分别是在if块中执行
    toUpperCase()
    的另一个调用


    您的代码基本上是正确的-您只是在错误的地方更改了案例。因此,只需“交换”这些电话!当然-不要使用
    println()
    -因为这会打印一条“线”——意思是在最后添加一条“新线”

    只需使用print()方法而不是println(),因为println()总是添加新行。

    只需使用print()方法而不是println(),因为println()总是添加新行。

    首先给出一些提示,以获得更好的代码:

  • 结构化sour代码,因此请为每个步骤使用方法(如果需要)
  • 只有一个字母的变量应该是迭代变量,但最好不要只有一个字母的变量。(c)
  • 以下是一些简单的示例(可以优化):


    首先是一些更好代码的提示:

  • 结构化sour代码,因此请为每个步骤使用方法(如果需要)
  • 只有一个字母的变量应该是迭代变量,但最好不要只有一个字母的变量。(c)
  • 以下是一些简单的示例(可以优化):


    只在末尾打印,这样速度会快一点。但是如果需要,可以一步一步地将uppercaseVowels()-方法更改为CHAR,并为stringBuilder中的每个CHAR调用它(inputString.tolowercase());代码是否会循环识别元音和辅音以给出其余规则?不,此代码只是将所有元音设置为小写,然后大写。所以常量很小且“未触及”,元音是大写字母,其他字符与beforre相同,因为它们被大写/小写字母忽略。这段代码正是您想要的打印和执行,但是结构更好,而且更短,无需迭代。只在最后打印,所以速度会快一点。但是如果需要,可以一步一步地将uppercaseVowels()-方法更改为CHAR,并为stringBuilder中的每个CHAR调用它(inputString.tolowercase());代码是否会循环识别元音和辅音以给出其余规则?不,此代码只是将所有元音设置为小写,然后大写。所以常量很小且“未触及”,元音是大写字母,其他字符与beforre相同,因为它们被大写/小写字母忽略。这段代码正是您想要的打印和执行,但结构更好,而且更短,无需迭代。
    print
    告诉我:
    HeLLo[INFO]NETBEANS ExecEvent:{“mojo”:{“impl”:“org.codehaus.mojo.exec.ExecMojo”,“url”:[“文件:\/home\/brian\/.m2\/repository\/org\/codehaus\/mojo\/exec-maven-plugin\/1.2.1\/exec-maven-plugin-1.2.1.jar”,“文件:\/home\/brian\/.m2\/repository\/org\/apache\/maven\/reporting\/maven-reporting-api\/2.0.6\/maven-reporting-api-2.0.6.jar”文件:\/home\/brian\/.m2\/repository\/org\/apache\/maven\/doxia\/doxia sink api\/1.0-alpha-7\/doxia-sink-api-1.0-alpha-7.jar”,“文件:\/home\/brian\/.m2\/repository\/commons cli\/commons cli\/1.0\/commons-cli-1.0.jar”
    添加
    System.out.print(System.lineSeparator())
    在您的
    返回c;
    语句之前;
    谢谢,老兄,您答对了。@bademba很好。如果您满意
    打印