gpt4 book ai didi

java - 断线器应用

转载 作者:行者123 更新时间:2023-12-01 10:30:26 24 4
gpt4 key购买 nike

我正在设计一个应用程序,我应该在其中获取一行字符串和一个中断号。我对此很陌生,所以我对如何循环和“破坏”字符串的逻辑感到困惑。我还在我的运行器类中遇到了运行时错误“String index out of range: 0(in java.lang.String)”,因为它突出显示了我的代码的最后一行(while 周界)。

输入示例如下:

你好,世界

3

输出示例为

求助

世界

ld

到目前为止我的代码是

     import java.util.Scanner;

public class LineBreaker
{
private String line;
private int breaker;

public LineBreaker()
{
this("",0);
}

public LineBreaker(String s, int b)
{
s = "";
b = 0;
}

public void setLineBreaker(String s, int b)
{
line = s;
breaker = b;
}

public String getLineBreaker(String s, int b)
{
String box = "";
for(int i = 0; i < s.length() - 1; i++)
{
if(i == s.charAt(b))
{
System.out.println();
}
}
return box;
}
}

还有我的运行者类(class):

    import java.util.Scanner;

public class LineBreakerRunner
{
public static void main(String args[])
{
Scanner keyboard = new Scanner(System.in);
String choice = "";
do{
System.out.println("Enter a group of characters please.");
String characters = keyboard.nextLine();
System.out.println("Enter an integer please.");
int number = keyboard.nextInt();
LineBreaker test = new LineBreaker();
test.getLineBreaker(characters,number);
System.out.println("Do you want to enter more data?(Y/N)");
choice = keyboard.nextLine();
}while(choice.charAt(0) == 'Y'||choice.charAt(0) == 'y');
}
}

任何帮助将不胜感激,感谢您的宝贵时间!

最佳答案

问题出在你的 if 语句 if(i == s.charAt(b))这样做只会在当前字母的 ASCII 值等于索引时进行打印。

直接打印

如果您想直接从方法中打印,完整的方法将如下所示:

public void getLineBreaker(String s, int b)
{
for(int x=0; x<s.length(); x++){
System.out.print(s.charAt(x));
if((x+1)%b == 0) //print a newline every n characters (where n is b)
System.out.println();
}
}

返回字符串

如果你只想创建一个String并最终返回它,你可以这样做:

public String getLineBreaker(String s, int b)
{
String str = "";
for(int x=0; x<s.length(); x++){
str += s.charAt(x);
if((x+1)%b == 0)
str += "\n";
}
return str;
}

使用 StringBuilder 构建字符串

为了获得更好的性能,您还可以使用 StringBuilder:

public static String getLineBreaker(String s, int b)
{
StringBuilder str = new StringBuilder();
for(int x=0; x<s.length(); x++){
str.append(s.charAt(x));
if((x+1)%b == 0)
str.append("\n");
}
return str.toString();
}
<小时/>

测试输出:

hel
loW
orl
d

关于java - 断线器应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35120588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com