2014-03-13 138 views
1

我正在尝试读取文件并根据文件每行所说的内容执行命令。 该文件是这样的:来自文件的命令

Add saw cutting tool 
Add yen a monetary unit 
Add pan a dish 
List  


public void Load(String fileName) throws FileNotFoundException{ 
    BufferedReader r = new BufferedReader (new FileReader(fileName)); 
    Scanner sc = new Scanner(r); 
    while(sc.hasNextLine()){ 
     while(sc.hasNext()){ 
      String temp =sc.nextLine(); 

      **if(temp.startsWith("Add")){ 
       String word = sc.next().toLowerCase(); 
       String def = sc.nextLine().toLowerCase(); 
       Add(word, def);**   

      }else if(temp.equals("List")){ 
       List(); 
      } 
     } 
    } 
} 

它是打印:

Add saw cutting tool Add yen a monetary unit Add pan a dish 

我希望它打印出来,如:

saw cutting tool 
yen a monetary unit 
pan a dish 

我知道,这个问题是不是在打印。问题出在上面的**中。有关如何解决此问题的任何建议?

+0

你需要找到一种方式来剥离从你的琴弦“添加”,你可以做的另一个条件,如果sc.next.toLowerCase()。等于(“补充) ); skip和word等于sc.next。这应该给你想要的结果。我们可以看到你的打印方法么? –

+0

@chrisedwards add()将单词和它的def发送到二叉搜索树和列表( )按字母顺序打印树 – user3277779

回答

0
Do this way: It might solve your problem: 

public void Load(String fileName) throws FileNotFoundException{ 
     BufferedReader r = new BufferedReader (new FileReader(fileName)); 
     Scanner sc = new Scanner(r); 
     while(sc.hasNextLine()){ 
      while(sc.hasNext()){ 
       String temp =sc.nextLine(); 

       if(temp.startsWith("Add")){ 
        temp = temp.replaceAll("Add ", ""); 
        String[] word = temp.split("\\s", 2); 
        Add(word[0], word[1]);  

       }else if(temp.equals("List")){ 
        System.out.println("List"); 
       } 
      } 
     } 
    } 
+0

谢谢,这工作 – user3277779

+0

您的欢迎.... :-) – Sambhav

0

试试这个

if(temp.startsWith("Add")){ 
    String word = sc.next().toLowerCase().replaceFirst("All", ""); 
    String def = sc.nextLine().toLowerCase().replaceFirst("All", "");; 
    Add(word, def); 
} 
+0

这不起作用,我得到了相同的结果 – user3277779