将单词拆分为java

时间:2016-03-15 12:16:17

标签: java string split

我正在制作文件输入和文本输出代码。 我包含了input.txt,文本内容就像下面的

4
100 Watched
2 Key holders
3 Stamps
30 Data structure textbooks
//entered between every number

我喜欢输出结果是" Key holder" 但在我的代码中,输出是" Key"

我不知道如何打印"持有人"钥匙旁边。 当然我认为原因是因为我在每个" "看到了。那我怎么能用只有两个分区来切割字符串,由整数和右边组成?

import java.io.BufferedReader;
import java.io.FileReader;

import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;

public class Assignment11 {
    public static void main(String[] args) {

    try {
        BufferedReader in = new BufferedReader(new FileReader("input.txt"));

        String entryString;
        entryString = in.readLine();

        int entryNum = Integer.valueOf(entryString);

        int min = Integer.MAX_VALUE;
        String result = null;
        for(int i = 0; i < entryNum; i++){
            String temp; 
            temp = in.readLine();

            String entry[] = temp.split(" "); 
            int price = Integer.parseInt(entry[0]);

            if(price < min){
                min = price;
                result = entry[1];
            }
        }
        System.out.println(result);
        in.close();
    } catch (Exception e) {
        System.err.println(e);
        System.exit(1);
    }
    }
}

2 个答案:

答案 0 :(得分:3)

String.split()有一个重载,它限制了将字符串拆分成多少部分。在这种情况下,你只需要;

temp.split(" ", 2)

答案 1 :(得分:0)

修复程序的最佳方法如下。不使用term.split(" "),而是在字符串中找到第一个space的位置,并使用该位置将输入行拆分为两个。输入行的第一部分将是您要解析的数字,拆分的第二部分将是您要打印的行。

例如:

int a = term.indexOf(" ");
if (a != -1) {
   try{
       int price = Integer.parseInt(term.substring(0, a));
       if (price < min) {
           min = price;
           result = term.substring(a);
       }
   }
   catch(NumberFormatException e) {

   }
}