从for循环中返回一个字符串

时间:2016-12-28 00:31:40

标签: java string

我正在为我的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();
        }
    }
}

提前感谢您的帮助!我确信这只是一个我想念的简单解决方案。

2 个答案:

答案 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 ());

<强>输出

  

这是我的测试