2014-10-31 61 views
0

我遇到任务问题。多任务:从字符串中解析空格分隔的整数

我的工作是

  • 抓斗从文件中String(在源文件是数字在一行中,由空间划分)
  • 分裂由空格该字符串
  • 然后分析每个Stringint
  • 最后在它们上面使用bubbleSort。

我被解析了,不知道该怎么做。

代码ATM看上去某事像这样:

public class Main 
{ 
    public static void main(String[] args) throws IOException 
    { 
     String numbers = new String(Files.readAllBytes(Paths.get("C:\\README.txt"))); 
     String s[] = numbers.split(" "); 
     for (String element : s) 
     { 
      System.out.println(element); 
     } 
    } 
} 

我试图用扫描仪读取串号,然后循环它parseInt函数,但对我不起作用。

+3

你有没有试图parseInt得到任何错误?请详细说明你的问题:) – Frunk 2014-10-31 08:31:33

回答

0

你可以试试这个:

public class Main 
    { 
     public static void main(String[] args) throws IOException 
     { 
      String numbers = new String(Files.readAllBytes(Paths.get("C:\\README.txt"))); 
      String s[] = numbers.split(" "); 
      for (String element : s) 
      { 
      int number = Integer.valueOf(element) // transform String to int 
      System.out.println(number); 
      } 
     } 
    } 

我认为一个想法是将整个String-Array转变成int-arrayList of Integers

可以做到这一点,用这种方法(几乎相同的类似上面):

private List<Integer> transformToInteger(final String[] s) { 
     final List<Integer> result = new ArrayList<Integer>(); 
     for (String element : s) 
     { 
     final int number = Integer.valueOf(element); 
     result.add(number); 
     } 
     return result; 
    } 

现在你可以在这个结果列表上执行你的气泡排序。

2

你正在寻找的方法是Integer#parseInt()

当使用的Java 8,你可以利用Stream API的喜欢如下:

final List<Integer> intList = new LinkedList<>(); 

try { 
    Files.lines(Paths.get("path\\to\\yourFile.txt")) 
     .map(line -> line.split(" ")) 
     .flatMap(Stream::of) 
     .map(Integer::parseInt) 
     .forEach(intList::add); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 

没有流:

final List<Integer> intList = new LinkedList<>(); 

try { 
    for (String line : Files.readAllLines(Paths.get("path\\to\\yourFile.txt"))) { 
     for (String numberLiteral : line.split(" ")) { 
      intList.add(Integer.parseInt(numberLiteral)); 
     } 
    } 
} catch (IOException ex) { 
    ex.printStackTrace(); 
}