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
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很好。如果您满意打印