循环打印不止一次

时间:2015-09-30 21:00:22

标签: java

您好我正在尝试从低级转换为大写。我知道他们是其他更简单的方法,但我想要别的东西。似乎该程序不止一次打印出用户输入,所以我几乎100%肯定它是循环。但我无法找到问题所在。

String a = input.nextLine();
String c = "";
int b = a.length();

for (int i = 0 ; i < b; i++)
{
    if (a.charAt(i) >= 97 && a.charAt(i) <= 122)
    {
        c = c + a;
        System.out.println(c.toUpperCase());
    }
}

4 个答案:

答案 0 :(得分:1)

实际上您的代码逻辑并不完全正确,我的意思是您为什么要将a的内容添加到c?没有意义,你在if中排除了 a z 中的字母。

String a = input.nextLine();
String c = "";
int b = a.length();
for (int i = 0; i < b; i++) {
    if (a.charAt(i) >= 97 && a.charAt(i) <= 122) {
        c = c + a.charAt(i);
    }
}
System.out.println(c.toUpperCase());

答案 1 :(得分:0)

您在输入c的循环的每次迭代中打印if,而不是在结束后打印一次。

答案 2 :(得分:0)

此解决方案应该有效:

for (int i = 0 ; i < b; i++)
{
    if (a.charAt(i) > 97 && a.charAt(i) < 122)
    {
        a = a.toUpperCase();
    }
}
System.out.println(a);

答案 3 :(得分:0)

为什么要打扰完全循环呢?

String a = input.nextLine();
System.out.println( a.toUpperCase();

会做你想做的事

如果要反转字符:

StringBuffer sb = new StringBuffer(a);
for ( int i=0; i < sb.length(); i++ ) {
   char c = sb.charAt(i);
   if ( c.isLower() ) {
      sb.setCharAt(i,c.toUpper());
   } else if ( c.isUpper() ) {
      sb.setCharAt(i,c.toLower());
   }
}
String result = sb.toString();