Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将stringbuffer转换为字符串并按字母顺序放置单词_Java_Stringbuilder - Fatal编程技术网

Java 将stringbuffer转换为字符串并按字母顺序放置单词

Java 将stringbuffer转换为字符串并按字母顺序放置单词,java,stringbuilder,Java,Stringbuilder,我试图从文件中读取字符串并将其存储在StringBuffer中,然后以某种方式将其转换为字符串,并将该字符串拆分为单词,并按字母顺序显示它们。没有stringbuffer我也能做,但我必须这样做。 这就是我到目前为止所做的: public class TextProcessor { public static void main(String[] args) throws IOException { String input_filename =

我试图从文件中读取字符串并将其存储在StringBuffer中,然后以某种方式将其转换为字符串,并将该字符串拆分为单词,并按字母顺序显示它们。没有stringbuffer我也能做,但我必须这样做。 这就是我到目前为止所做的:

    public class TextProcessor {
         public static void main(String[] args) throws IOException {
            String input_filename = "input_filename.txt";

             File file1 = new File(input_filename);


             Scanner input = new Scanner(file1);
             StringBuffer buffer = new StringBuffer("");

             while (input.hasNext()){        
                 String s = input.next();           
                 buffer.append(s);
                             //this is where I need to convert the stringbuffer to
                             // a string and split the words to put them in alphabetized  order
                            // this is what I did 
                 String arr= s.toString().toLowerCase();
                 String [] words = arr.split(" ");// Nothing seems to work.
buffer.toString()
应该可以

但是要小心,
StringBuffer
不会为您添加空格。因此,当您拆分(“”)时,它将不起作用

修正:

然后:

但当然,通过采纳程序员的建议,将字符串放在
列表中而不是
StringBuffer
中,可以避免这种额外的逻辑。要按字母顺序排序,请调用集合。排序(listOfStrings)


是的,更多信息

StringBuffer
是线程安全的,但效率低于
StringBuilder
。考虑到您目前的知识,我建议您使用
StringBuilder

有两件事会突然出现

首先,您“似乎”试图在读取内容的循环中创建一个数组。我想你应该先读取整个文件

其次,您没有在
StringBuilder
中添加分隔符,这意味着您的拆分将失败,因为它(可能)没有任何可拆分的内容

while (input.hasNext()){        
    String s = input.next();           
    if (buffer.length() > 0) {
        buffer.append(" ");
    }
    buffer.append(s);
}
String arr= s.toString().toLowerCase();
String [] words = arr.split(" ");// Nothing seems to work.
对于排序,您应该查看

就我个人而言,我会使用某种类型的
列表
,但您似乎“必须”使用
StringBuilder

下面是完整的列表

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

 public class TextProcessor {

         public static void main(String[] args) throws IOException 
         {

             String input_filename = "/home/alp/workspace/text.txt";
             String temp_string = null;
             String[] words;
             File file = new File(input_filename);
             Scanner input = new Scanner(file);
             StringBuffer buffer = new StringBuffer();

             while (input.hasNext())
             {        
                 String s = input.next();   
                 buffer.append(s).append(" ");
             }
             temp_string= buffer.toString();
             words=temp_string.split(" ");
             Arrays.sort(words);
             for(int i=0; i<words.length; i++) System.out.println(words[i]);
         }
}
导入java.io.File;
导入java.io.IOException;
导入java.util.array;
导入java.util.Scanner;
公共类文本处理器{
公共静态void main(字符串[]args)引发IOException
{
字符串输入_filename=“/home/alp/workspace/text.txt”;
String temp_String=null;
字符串[]个单词;
文件文件=新文件(输入文件名);
扫描仪输入=新扫描仪(文件);
StringBuffer=新的StringBuffer();
while(input.hasNext())
{        
字符串s=input.next();
缓冲区。追加。追加(“”);
}
temp_string=buffer.toString();
words=temp_string.split(“”);
数组。排序(单词);

对于(int i=0;我为什么“必须”使用
StringBuilder
?将它们存储在
列表中会更简单。对于本作业,我必须使用StringBuffer,那么至少有两个答案可以让您朝着正确的方向前进……在盲目实施之前,确保您知道建议它们的“原因”;)你为OP做作业真是太好了…但是当老师问他们为什么选择这样做时…他们能回答他们吗…?而且,你可能会在列表的末尾出现一个空白元素…看起来他做了我的作业,但我在代码中添加的唯一一件事是附加(“”)。谢谢大家的帮助。
while (input.hasNext()){        
    String s = input.next();           
    if (buffer.length() > 0) {
        buffer.append(" ");
    }
    buffer.append(s);
}
String arr= s.toString().toLowerCase();
String [] words = arr.split(" ");// Nothing seems to work.
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

 public class TextProcessor {

         public static void main(String[] args) throws IOException 
         {

             String input_filename = "/home/alp/workspace/text.txt";
             String temp_string = null;
             String[] words;
             File file = new File(input_filename);
             Scanner input = new Scanner(file);
             StringBuffer buffer = new StringBuffer();

             while (input.hasNext())
             {        
                 String s = input.next();   
                 buffer.append(s).append(" ");
             }
             temp_string= buffer.toString();
             words=temp_string.split(" ");
             Arrays.sort(words);
             for(int i=0; i<words.length; i++) System.out.println(words[i]);
         }
}