2016-01-29 32 views
-1

我必须做的任务是将包含“int”的文件中的行存储到字符串数组中。该文件的内容是如何在拆分后添加字符串

#include<stdio.h> 
#include<conio.h> 

void main() 
{ 
    int i=5; 
    int j=9; 
    int s,t; 

    s=i+3; 
    t=j+7; 
    q=j+4; 

    cout<<s<<t<<q; 
} 

但运行下面的代码,而不是有3个int语句在其中。编译器只显示最后一个int行。如何获得早期的产品线?

import java.io.File; 
import java.util.Scanner; 
import java.lang.*; 

public class ReadFile { 
    public static void main(String[] args) { 
     int i=0; 
     String[] myStringArray = new String[]{ }; 
     try { 
      Scanner input = new Scanner(System.in); 
      File file = new File("123.txt"); 
      input = new Scanner(file); 

      while (input.hasNextLine()) { 
       String line = input.nextLine(); 
       if(line.contains("int")){ 
        myStringArray=line.split("[\\s,;]+");      
       } 
      } 

      for(String a :myStringArray){ 
       System.out.println(a); 
      } 

      input.close(); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
+0

可能会在'cout'中的数字之间添加空格/制表符? –

+0

@Lashane C代码只应该被视为文本,它在java代码中,他有问题。 – Aaron

+0

@Aaron我的意思是'cout << s << t << q;'会产生带有'81613'的单行,或者我错过了什么? –

回答

0
myStringArray = ArrayUtils.addAll(myStringArray,line.split("[\\s,;]+")); 

您需要连接下一个发现“诠释”到您myStringArray结束。您的代码将覆盖循环的每个元素的myStringArray

+0

我不确定他想把每一行的所有部分放在同一个数组中。我想知道他是不是错误地将行分开,以便类型匹配 – Aaron

+0

对我来说,听起来像是他希望所有三者一起“但是在运行下面的代码而不是在其中包含3个int语句之后,仅编译器显示最后的int行,如何获得先前的行?“。他的语法不是很好,我很难理解......所以,也许你是对的@Aaron –

+0

我的意思是,用你的代码,他将无法区分哪一部分属于哪一行。如果我没有弄错,你可能会产生'[“int”,“i = 5”,“int”,“j = 9”,“int”,“s”,“t”]'首选拥有一组单词数组或仅包含一行数组。很难说目前的问题确实如此。 – Aaron

0

myStringArray=line.split("[\\s,;]+");您将替换整个数组。