将字符串中的每个字母加倍

时间:2013-11-18 16:13:53

标签: java while-loop char

我正在为Java 1做一个项目,我完全坚持这个问题。

基本上我需要将字母串中的每个字母加倍。

"abc"  ->  "aabbcc"
"uk"   ->  "uukk"
"t"    ->  "tt"

我需要在一个被认为是“Java 1”的while循环中做到这一点。所以我猜这意味着更多的问题方法。

我知道根据我的知识,对我来说最简单的方法就是在while循环中使用charAt方法,但由于某些原因,我的思想无法弄清楚如何将字符返回给另一个方法一个字符串。

由于

[编辑]我的代码(错误,但也许会有所帮助)

int index = 0;
  int length = str.length();
  while (index < length) {
      return str.charAt(index) + str.charAt(index);
      index++;
  }

7 个答案:

答案 0 :(得分:7)

String s="mystring".replaceAll(".", "$0$0");

方法String.replaceAll使用documentation of the Pattern class中描述的正则表达式语法,我们可以在其中了解.匹配“任何字符”。在替换中, $ number 指的是编号为“捕获组”,而$0是预定义为整个匹配。所以$0$0指的是匹配字符两次。正如该方法的名称所暗示的那样,它是针对所有匹配执行的,即所有字符。

答案 1 :(得分:3)

是的,for循环在这里真的更有意义,但是如果你需要使用while循环那么它会是这样的:

String s = "abc";
String result = "";
int i = 0;
while (i < s.length()){
    char c = s.charAt(i);
    result = result + c + c;
    i++;
}

答案 2 :(得分:2)

你可以这样做:

public void doubleString(String input) {

    String output = "";

    for (char c : input.toCharArray()) {
        output += c + c;
    }

    System.out.println(output);

}

答案 3 :(得分:2)

你的直觉非常好。 charAt(i)会返回位置i的字符串中的字符,是吗?

你还说你想要使用一个循环。遍历列表长度for的{​​{1}}循环将允许您执行此操作。在字符串中的每个节点上,您需要做什么?加倍角色。

让我们来看看你的代码:

string.length()

对于您的代码有问题,您在进入循环后立即返回两个字符。因此,对于字符串int index = 0; int length = str.length(); while (index < length) { return str.charAt(index) + str.charAt(index); //return ends the method index++; } ,您将返回abc。让我们将aa存储在内存中,然后像这样返回完成的字符串:

aa

这会将字符添加到int index = 0; int length = str.length(); String newString = ""; while (index < length) { newString += str.charAt(index) + str.charAt(index); index++; } return newString; ,允许您返回整个已完成的字符串,而不是一组双字符。

顺便说一句,这可能更容易做为for循环,缩小和澄清你的代码。我的个人解决方案(对于Java 1类)看起来像这样:

newString

希望这会有所帮助。

答案 4 :(得分:1)

试试这个

    String a = "abcd";
    char[] aa = new char[a.length() * 2];
    for(int i = 0, j = 0; j< a.length(); i+=2, j++){
        aa[i] = a.charAt(j);
        aa[i+1]= a.charAt(j);
    }
    System.out.println(aa);

答案 5 :(得分:0)

public static char[] doubleChars(final char[] input) {
    final char[] output = new char[input.length * 2];
    for (int i = 0; i < input.length; i++) {
        output[i] = input[i];
        output[i + 1] = input[i];
    }
    return output;
}

答案 6 :(得分:0)

假设这是在方法中,您应该明白只能从方法返回。在遇到return语句后,控件返回调用方法。因此,每次循环返回char的方法都是错误的。

int index = 0;
int length = str.length();
while (index < length) {
   return str.charAt(index) + str.charAt(index); // only the first return is reachable,other are not executed
   index++;
 }

更改方法以构建String并将其返回

public String modify(String str)
{
    int index = 0;
    int length = str.length();
    String result="";
    while (index < length) {
       result += str.charAt[index]+str.charAt[index];
       index++;
    }
    return result;
}