2013-10-13 138 views
5

我在使用gradle構建並運行一個要求用戶輸入單詞的java項目,當「done」正在輸入時,程序將打印一個已排序的字符串列表。運行失敗java.util.NoSuchElementException

當我使用命令gradle -build構建項目時,它成功構建,但是當我嘗試運行它時,它看起來像Gradle不會「讓我時間」輸入一個單詞,然後Gradle tell我「找不到線」。

這裏是我的函數void enter_words在我的Java程序中的提取物():

System.out.println("Enter a word"); 
    str=sc.nextLine(); 

這裏是搖籃告訴我,當我在外殼使用gradle這個運行命令:

C:\Users\celine\Desktop\test2>gradle run 
:compileJava UP-TO-DATE 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:runMain 
Enter a word // the program is running but I can't enter a word 
Exception in thread "main" java.util.NoSuchElementException: No line found 
     at java.util.Scanner.nextLine(Scanner.java:1585) 
     at d.Project1.enter_words(Project1.java:42) 
     at d.Project1.main(Project1.java:81) 
:runMain FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':runMain'. 
> Process 'command 'C:\Program Files\Java\jdk1.7.0_40\bin\java.exe'' finished wi 
th non-zero exit value 1 

這裏是我的java程序:

package com.gumgum.test; 

import java.util.Arrays; 
import java.util.Scanner; 

import org.apache.commons.lang.StringUtils; 

public class Project1 { 

    private int max; 
    private String[] userInputs; 

    // constructors 
    public Project1() { 
     max=100; 
     userInputs = new String[max]; 
    } 

    public Project1(int n) { 
     max=n; 
     userInputs = new String[max]; 
    } 

    //getter 
    String[] getUserInputs() { 
     return userInputs; 
    } 

    //setter: all words entered by the users are written in tab 
    public void setUserInputs(String[] tab, int position, String str) { 
     tab[position]=str; 
    } 

    //demande à l'utilisateur d'entrer un mot 
    public void enter_words() { 
     Scanner sc = new Scanner(System.in); 
     int countWords=0; 
     String str=""; 
     while ((countWords<3) || (str.equals("done")!=true)) { 

      System.out.println("Enter a word"); 
      str=sc.nextLine(); 

      if (StringUtils.isBlank(str) == true) 
        System.out.println("Please enter a valid word"); 
      else if (str.length()<=2) 
       System.out.println("Please enter at least 3 characters"); 

      if ((str.length()>=3) && (StringUtils.isBlank(str) != true)) { 
       switch(str) { 
        case "done" : 
         if (countWords<3) 
          System.out.println("Please enter at least three words"); 
         break; 
        default: 
         setUserInputs(this.userInputs,countWords,str); 
         countWords++; 
         break; 
       } 
      } 
     } 
    } 

    public void lexico_order(String[] tab) { 
     int i=0; 
     System.out.println(""); 
     while(tab[i]!=null) { 
      i++; 
     } 
     int k=0; 
     Arrays.sort(tab, k, i); 
     System.out.println("****** Sorted String List *******"); 
     for (int j=0;j<i;j++) 
      System.out.println(tab[j]); 
    } 

    public static void main(String[] args) { 
     Project1 p; 
     p = new Project1(); 
     p.enter_words(); 
     System.out.printf("ca marche"); 
     p.lexico_order(p.getUserInputs()); 
    } 

} 

回答

3

添加:

run { 
standardInput = System.in 
} 

我的build.gradle解決了這個問題對我來說

相關問題