我正在为我的java编程1类开发一个项目,在这个项目中,您应该接受一个字符串,并将字符串中的每个字母的大写字母更改为更低和更低。这是我的代码到目前为止,无论我尝试什么,我都无法让程序返回我的最终字符串输出。
import java.util.*;
public class LowerUpper {
public static void Main(String[] args) {
Scanner letters = new Scanner(System.in);
System.out.println("Please enter 3 letters:");
String input = letters.next();
int length = input.length();
for (int i = 0; i < length; i++){
if (Character.isUpperCase(input.charAt(i))) {
Character.toLowerCase(input.charAt(i));
break;
}
else if (Character.isLowerCase(input.charAt(i))) {
Character.toUpperCase(input.charAt(i));
break;
}
return input.toString();
}
}
}
提前感谢您的帮助!我确信这只是一个我想念的简单解决方案。
答案 0 :(得分:2)
首先,它是main
(不是Main
)。其次,您忘记创建第二个方法(返回String
),您无法从String
方法返回void
(如main
)。一旦你有方法,你就需要打电话给它。但是,让我们从这个方法开始吧。您需要在生成字符时存储字符。在Java 8+中,您可能会这样做
public static String swapCase(String input) {
return input.codePoints()
.map(ch -> Character.isUpperCase(ch) ?
Character.toLowerCase(ch) :
Character.toUpperCase(ch))
.collect(StringBuilder::new,
StringBuilder::appendCodePoint,
StringBuilder::append).toString();
}
或喜欢,
public static String swapCase(String input) {
StringBuilder sb = new StringBuilder();
char[] chars = input.toCharArray();
for (char ch : chars) {
if (Character.isUpperCase(ch)) {
sb.append(Character.toLowerCase(ch));
} else {
sb.append(Character.toUpperCase(ch));
}
}
return sb.toString();
}
或喜欢,
public static String swapCase(String input) {
StringBuilder sb = new StringBuilder();
input.chars().forEachOrdered(ch -> {
sb.append(Character.isUpperCase(ch) ?
Character.toLowerCase(ch) :
Character.toUpperCase(ch));
});
return sb.toString();
}
然后调用它,
public static void main(String[] args) {
Scanner letters = new Scanner(System.in);
System.out.println("Please enter 3 letters:");
String input = letters.next();
System.out.printf("Original: %s, Swapped: %s%n", input, swapCase(input));
}
答案 1 :(得分:0)
使用StringBuilder
保留已转换的字符。
此外,您不希望break
否则您只会转换第一个字符
尝试类似
的内容StringBuilder buf = new StringBuilder ();
for (int i = 0; i < length; i++){
if (Character.isUpperCase(input.charAt(i))) {
buf.append (Character.toLowerCase(input.charAt(i)));
// break;
}
else {
buf.append (Character.toUpperCase(input.charAt(i)));
// break;
}
}
return buf.toString ();
修改强>
测试解决方案
String input = "this iS my test";
int length = input.length();
StringBuilder buf = new StringBuilder ();
for (int i = 0; i < length; i++){
if (Character.isUpperCase(input.charAt(i))) {
buf.append (Character.toLowerCase(input.charAt(i)));
// break;
}
else {
buf.append (Character.toUpperCase(input.charAt(i)));
// break;
}
}
System.out.println(buf.toString ());
<强>输出强>
这是我的测试