簡體   English   中英

Java,將文本分類為行

[英]Java, sort text into lines

我正在編寫一個從文件中讀取文本,然后將其排序為最大特定寬度的行的代碼。

示例:包含“ aaaa bbbb cccc dddd”的文本

指定的寬度為16

所以輸出應該是

aaaa bbbb cccc //width is only 14, if dddd is added, it would be longer than 16.

dddd

我的方法:閱讀文本並將其分配給字符串

Scanner input_OUT = new Scanner(new File("abc"));

PrintStream output = new PrintStream("abc");
.
.


 while (input_OUT.hasNextLine()) {
            str = input_OUT.nextLine();
        }

String s = "";

while(input_OUT.hasNext()) { // get words if it still have

            if (s.length() + input_OUT.next().length() > width) { 
                s = str.substring(0,s.length());
                output.println(s);
                str = str.substring(s.length()+1,str.length());
                s = "";
            }
            else {
                s += input_OUT.next();
            }

        }

雖然可以編譯。 但是該文件未顯示任何輸出。 我認為我的代碼不正確。 我知道有用於stringbuild,字符串拆分,數組的選項。 但是我現在被允許這樣做。

第一個問題是在此循環內,假設從文件中掃描了多個內容,則此方法將行不通。

String str;
while (input_OUT.hasNextLine()) {
   str = input_OUT.nextLine();
}

您要做的就是將str重置為下一個掃描的元素。

更好的方法是將文件輸入存儲到字符串數組中。

String str;   
String S[] = new String[#stringsInFile];
int i = 0;
while (input_OUT.hasNextLine()) {
   str = input_OUT.nextLine();
   S[i] = str;
   i++
}

現在,您要做的就是操作數組S [],然后將其輸出到輸出文件。

在注釋中指出您說您不能使用數組。 讓我們繼續添加到S然后允許您對S進行操作。 該方法:

 String str;
 String S = "";    
 while (input_OUT.hasNextLine()) {
    str = input_OUT.nextLine();
    S = S +" "+ str; //This will keep adding onto S until hasNextLine is false
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM