我正在进行一个包含几个单独部分的课程作业,除了这个部分之外我都做过。我需要从用户那里获得一个字符串输入并创建一个循环(最好是for循环),在每个字符之间插入星号。我完全不知道这个,所以如果有人能给我一些帮助,那么我将不胜感激。
到目前为止,我已经提出了这个问题
} else if (choice.equalsIgnoreCase("C")) {
System.out.print("Enter text here: ");
String orig = input.nextLine();
// To use for asterisk insertion
int x = 1;
int y = 2;
for (int length = orig.length(); length > 0;) {
orig = orig.substring(0,x) + "*" + orig.substring(y);
x = x + 2;
y = y + 2;
}
}
它编译得很好但是当我测试它并输入一些文本时它会出现 线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:5
答案 0 :(得分:0)
除非必须,否则不要重复使用变量。它只会使代码更复杂,更难阅读。
String orig = "my test";
StringBuilder result = new StringBuilder();
for (int i = 0; i < orig.length() -1;i++) {
result.append(orig.charAt(i));
result.append('*');
}
result.append(orig.charAt(orig.length()-1));
答案 1 :(得分:0)
你的for循环没有有效的终止条款。
for (int length = orig.length(); length > 0;)
将无限期地运行,直到它导致异常。
System.out.print("Enter text here: ");
String orig = input.nextLine();
for (int length = orig.length() - 1; length > 0; length--) {
orig = orig.substring(0,length) + "*" + orig.substring(length);
}
可生产
Enter text here: TestOutput T*e*s*t*O*u*t*p*u*t
如果你想在最后的't'之后输*,你可以通过删除for循环中的“ - 1”轻松添加它。
答案 2 :(得分:0)
尝试此程序在字符串的每个字符之间添加星号。
int leng;
Scanner sc= new Scanner(System.in);
System.out.println("enter the name");
String name=sc.nextLine();
leng=name.length();
char c[]=new char[leng];
for(int i=0;i<=leng-1;i++){
c[i]=name.charAt(i);
System.out.print(c[i]);
if(i<leng-1)
System.out.print("*");
}