2013-10-13 3 views
5

Я использую град, чтобы создавать и запускать проект java, который просит пользователя вводить слова, а когда «done» печатает, программа печатает отсортированный список строк.Запуск с ошибкой java.util.NoSuchElementException

Когда я создаю проект с помощью команды gradle -build, он успешно создается, но когда я пытаюсь запустить его, похоже, что Gradle не «позволяет мне время» вводить слово, а затем Gradle tell меня «ни одна линия не найдена».

Вот выдержка из моих функций недействительных enter_words() в моей Java программы:

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

Вот что сказал мне Gradle, когда я использую команду 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 решил эту проблему для меня

Смежные вопросы