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

问题描述 投票:0回答:8

我正在做一个 Java 1 项目,我完全被这个问题困扰了。

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

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

我需要在一个 while 循环中完成它,这被认为是“Java 1”值得的。 所以我猜这意味着更多的是有问题的方法。

我知道,据我所知,最简单的方法是在 while 循环中使用 charAt 方法,但由于某种原因,我的头脑无法弄清楚如何将字符作为字符串返回到另一个方法.

谢谢

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

int index = 0;
  int length = str.length();
  while (index < length) {
      return str.charAt(index) + str.charAt(index);
      index++;
  }
java while-loop char
8个回答
11
投票
String s="mystring".replaceAll(".", "$0$0");

方法

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


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
投票
你可以这样做:

public void doubleString(String input) { String output = ""; for (char c : input.toCharArray()) { output += c + c; } System.out.println(output); }
    

2
投票
你的直觉非常好。

charAt(i)

 将返回字符串中位置 
i
 处的字符,是吗?

您还说您想使用循环。一个

for

 循环,遍历列表的长度,
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;

这会将字符添加到

newString

,允许您返回整个完整的字符串,而不是一组双倍字符。

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

String newString = ""; for (int i = 0; i < str.length(); i++){ newString += str.charAt(i) + str.charAt(i); } return newString;

希望这有帮助。


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);
    

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; }
    

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++; }

更改构建字符串并返回它的方法

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; }
    

0
投票
由于 charAt 将返回字符,因此结果将显示数字而不是字符串。因此,我们可以使用 substring() 来代替使用 charAt 来获得预期的结果。

static String addString(String str) { String res=""; int i=0; while(i<str.length()) { res+=str.substring(i,i+1)+str.substring(i,i+1); i++; } return res; }
    
© www.soinside.com 2019 - 2024. All rights reserved.