Java 使用限制器后继续从字符串读入

Java 使用限制器后继续从字符串读入,java,java.util.scanner,Java,Java.util.scanner,我的问题可能根本不能很好地解释这个问题,但我所经历的是,我能够获得“box”的字符串的第一行,如这里的示例所示: 以下是我现在的主要代码: import java.util.Scanner; import static java.lang.System.*; public class LineBreaker { private String line; private int breaker; public LineBreaker() { this("",0); } public L

我的问题可能根本不能很好地解释这个问题,但我所经历的是,我能够获得“box”的字符串的第一行,如这里的示例所示:

以下是我现在的主要代码:

import java.util.Scanner;
import static java.lang.System.*;

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

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

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

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

public String getLine()
{
    return line;
}

public String getLineBreaker()
{
    String box ="";
    Scanner scan = new Scanner(line);
    //scan.useRadix(breaker);
    //while (scan.hasNext()){
        for(int i = 0; i < breaker; i++){
        box += scan.next();

    }box += "\n";
    //}

    return box;
}

public String toString()
{
    return line + "\n" + getLineBreaker();
}
}
目前,我的输出如下所示:

123456780901 123456789

1234

b i g b a d w o l h a d b i g a r s a d t h

th

a c o m p u r s c i e c e p r o g r a m

算盘

我是我是我是


ia

您的问题在这里的代码块中:

public String getLineBreaker() {
  String box ="";
  Scanner scan = new Scanner(line);
  //scan.useRadix(breaker);
  //while (scan.hasNext()){
      for(int i = 0; i < breaker; i++){
      box += scan.next();
  
  }box += "\n";
  //}
}
公共字符串getLineBreaker(){
字符串框=”;
扫描仪扫描=新扫描仪(行);
//scan.useRadix(断路器);
//while(scan.hasNext()){
对于(int i=0;i
你永远不会告诉程序在阅读后一直阅读到第一次中断

编辑 嗯。不要使用
scan.useRadix(断路器)
。这不适用--
useRadix()
告诉编译器解析数字的基数

您在
while
循环中走在正确的轨道上。但是,如果取消注释,它将抛出一个错误。此时扫描仪正在查找行中的下一个元素,但没有。在读取之前,请检查是否有剩余元素


还有一个来自个人经验的提示:当你有问题的时候,与你的教授见面会带来很大的不同。。。这里是一个提问的地方(我不是说你这样做是错误的),但我要说你的教授比我更了解你。

这就是我想的问题所在,但不管我怎么做,它要么会抛出一个错误(不是扫描仪错误),要么只会给出相同的输出mmm。。。嗯,我不是100%熟悉使用扫描器——我通常会在角色级别使用操纵。我会说,
scan.useRadix(r)
只是告诉扫描器解释以r为基数的数字。如果我能找到使用扫描器的方法,我会再次响应…因此如果使用
while(scan.hasNext()){…
正在尝试找出字符串中是否还有另一位,但它没有像我预期的那样读取它,因为字符串
已提前终止,这是如何解决的?假设您有
breaker=4
,字符串中剩余的字符是
abc
。当您点击while循环时,您有一个下一个字符,所以它继续尝试读取4次。本质上,您只需检查每个
破折号
字符是否有下一个字符。对,我只是想不出如何告诉程序读取4,新行,读取下一行4,新行,读取下一行4,新行。。。。。
public String getLineBreaker() {
  String box ="";
  Scanner scan = new Scanner(line);
  //scan.useRadix(breaker);
  //while (scan.hasNext()){
      for(int i = 0; i < breaker; i++){
      box += scan.next();
  
  }box += "\n";
  //}
}