当前位置: 首页 > 知识库问答 >
问题:

使用扫描器进行字符串处理

宣弘新
2023-03-14

问题:编写一个名为wordWrap的方法,该方法接受表示输入文件的扫描器作为其参数,并将文件的每一行输出到控制台,对超过60个字符的所有行进行文字包装。例如,如果一行包含112个字符,则方法应将其替换为两行:一行包含前60个字符,另一行包含最后52个字符。包含217个字符的行应该被包装成四行:三行的长度为60,最后一行的长度为37。

我的代码:

public void wordWrap(Scanner input) {

    while(input.hasNextLine()){
        String line=input.nextLine();
        Scanner scan=new Scanner(line);
        if(scan.hasNext()){
            superOuter:
            while(line.length()>0){

                for(int i=0;i<line.length();i++){
                    if( i<60 && line.length()>59){
                        System.out.print(line.charAt(i));

                    }
                    //FINISH OFF LINE<=60 characters here

                    else if(line.length()<59){

                        for(int j=0;j<line.length();j++){
                            System.out.print(line.charAt(j));

                        }
                        System.out.println();

                        break superOuter;
                    }
                    else{
                        System.out.println();

                        line=line.substring(i);

                        break ;
                    }


                }

            }
        }
        else{
            System.out.println();
        }

    }
}

输出中的问题:

预期产出:

Hello
How are you
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog
I am fine

Thank you
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog

The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog

This line is exactly sixty characters long; how interesting!

Goodbye

生产产量:

Hello
How are you
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog
I am fine

Thank you
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog

The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog the quick brown 
fox jumps over the lazy dog

This line is exactly sixty characters long; how interesting!This line is exactly sixty characters long; how interesting!This line is exactly sixty characters long; how interesting!...
*** ERROR: excessive output on line 13

我哪里做错了????

共有1个答案

昝晗昱
2023-03-14

else条件中(对于正好是60个字符的行),您只是从内部的for循环中断,而您想从外部的while循环中断(因此,您最终会将同一行写出60次)。

对于少于59个字符的行,可以使用breaksuperouter

 类似资料:
  • 我对编程相当陌生,正在尝试设计一种方法来创建具有多个参数的方法。扫描仪,单词字符串数组,与单词数组匹配的字符串数组,以及字符串数组中有多少单词的整数。我的目标是一个接一个地处理扫描仪中的单词,如果扫描仪中的一个单词也在单词数组中,我想在int数组中添加一个,如果一个单词不是单词数组,我想在数组的第一个空格处将其添加到单词数组中,并在与单词相同的位置将其添加到int数组中。该方法的目标是在处理扫描仪

  • 问题内容: 我正在编写一个使用Event类的程序,该类中有一个日历实例和一个String类型的描述。创建事件的方法使用扫描仪获取月,日,年,小时,分钟和说明。我遇到的问题是Scanner.next()方法仅返回空格之前的第一个单词。因此,如果输入为“我的生日”,则该事件实例的描述就是“我的”。 我做了一些研究,发现人们使用Scanner.nextLine()解决此问题,但是当我尝试这样做时,它只是

  • 我正试图用Java中的扫描器将一个字符串分成另外两个字符串。好像不起作用。我只能通过谷歌找到扫描仪用来读取控制台输入的例子。我从扫描仪的手册中找出了我做事情的方式,我不确定我错了什么。 第一个和第二个是空白的,我不知道为什么。

  • 我试图为字符串创建一个扫描器方法,它只在用户输入的值不为空时才返回该值(空白,用户立即点击“Enter”等)。如果用户这样做,我希望打印出一条错误消息,并让循环再次返回开始,等待新的用户输入。如果正确,我希望方法返回正确的输入值。 我的代码是这样的:

  • 我有一个文本文件,其中包含几行由空格分隔的小整数列表。我要扫描第一行,并为第一行中的每个整数做一些事情。 所以我有一个扫描仪(textScan),它扫描文本文件的第一行,然后将其保存为String。然后我有了第二个扫描器,它扫描String来检查其中的值是否是整数。 但是 while 语句不允许我使用“行.has下一个Int”来扫描字符串!那么,我如何浏览字符串行以确定它是否有整数? 编辑:对不起

  • 下面是一个简短的描述: 用户将输入一个“H”表示头部或一个“T”表示尾部,然后程序将打印出头部和尾部的总数和百分比。使用increment运算符在每次抛掷时递增抛掷次数。 不使用循环、ifs、fors等,我决定这个问题最接近的解决方案是使用comparteTo()这样的字符串方法和一个公式的组合来改变输出结果的增量值。 //假设扫描仪、标头等