断路器应用

时间:2016-01-31 22:58:04

标签: java string java.util.scanner

我正在设计一个应用程序,我应该采用一行字符串和一个中断号码。我对此很新,所以我对如何循环和“打破”字符串的逻辑感到困惑。我也在我的运行程序类“字符串索引超出范围:0(在java.lang.String中)”中遇到运行时错误,因为它突出显示了我的代码的最后一行(while while)。

输入示例为:

h l l o w o r l d

3

输出示例

HEL

LD

到目前为止,我的代码是

 0 1 2 3 4 5 6 7 8 9 A B
|a|a| | |b|b|b|b|c|d| | |
|       |       |       |

我的跑步者:

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

非常感谢任何帮助,感谢您的时间!

1 个答案:

答案 0 :(得分:1)

问题在于你的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