![](/img/trans.png)
[英]I need to print 1st and every 5th character from a given String in java
[英]Changing every 5th character in a String java
我正在尝试获取一个接受String并将每个第5个字符更改为'z'
的函数。 不管出于何种原因,第一个更改的字符始终是第六个字符,我不知道为什么。 如果字符串可以被5整除,也会出现错误,这是因为它从第6个字符开始,或者因为我的循环迭代距离太远了。
我搞砸了循环迭代,但看不到为什么它从第6个字符开始。
public static String change5thPosition(String s) {
int fives = (int) Math.floor((s.length() / 5));
System.out.println(fives);
char[] chars = s.toCharArray();
for (int i = 0; i <= fives; i++) {
if (i != 0)
chars[i * 5] = 'z';
}
String returnString = new String(chars);
return returnString;
}
输入示例:
所有的笑容都是巴拉格罗夫
预期产量:
所有zimsyzwerezthe zbragzoves
实际输出:
全部mzmsy zere zhe bzragrzves
编辑:感谢您的帮助。 这是我的更新代码:
public static String change5thPosition(String s) {
char[] chars = s.toCharArray();
for (int i = 4; i < s.length(); i = i + 5) {
chars[i] = 'z';
}
String returnString = new String(chars);
return returnString;
}
您的代码更改:
i=1 : chars[1 * 5 = 5]
i=2 : chars[2 * 5 = 10]
... and so on.
但是由于数组是从0开始索引的,所以您实际上要更改4,9,14, ...
处的字符。
因此,只需减去1。
chars[i*5 - 1] = 'z';
这些“一举成名”的错误在编程中很常见,您将学到预期的错误。
附带说明,不需要:
for(int i=0; i<=fives; i++){
if (i!=0) {
...
}
}
...当你刚开始i
在1:
for(int i=1; i<=fives; i++){
...
}
您还可以通过增加五位来避免乘法:
for(int i=4, i < chars.length; i += 5) {
char[i] = 'z';
}
只需在您的索引中添加-1 。
public static String change5thPosition(String s){
int fives = (int)Math.floor((s.length()/5));
System.out.println(fives);
char[] chars = s.toCharArray();
for(int i=0; i<=fives; i++){
if (i!=0)
chars[i*5 -1]='z';
}
String returnString = new String(chars);
return returnString;
}
一个简单的循环就可以完成工作。 注意索引并避免复杂的计算。
String n = "all mimsy were the baragroves";
char[] s = n.toCharArray();
for(int i = 4;i<s.length;i+=5){
s[i]='z';
}
System.out.println(s);
您可以尝试此代码。
public class Simple {
public static void main(String args[]) {
System.out.println(change5thPosition("all mimsy were the baragroves"));
}
public static String change5thPosition(String s) {
int fives = (int) Math.floor((s.length() / 5));
System.out.println(fives);
char[] chars = s.toCharArray();
int index = 1;
StringBuilder myvar = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (index == 5) {
myvar.append("z");
index = 1;
} else {
myvar.append(c);
index++;
}
}
return myvar.toString();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.