2015-08-12 3 views
0

Я изучил некоторые проблемы с практикой и задал вопрос по этому коду. Мне удалось понять это с помощью другого метода, но я не понимаю, почему этот пример не работает. Код запрашивает ввод до тех пор, пока пользователь дважды вводит один и тот же ввод, где он должен отображать дубликат ввода до окончания программа.Java-программа - «Ошибочное древовидная структура» Выпуск

Я получаю:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: any> 

Ошибка на последней строке с слово переменной. Есть идеи?

import java.util.ArrayList; 
import java.util.Scanner; 

public class MoreThanOnce { 

    public static void main(String[] args) { 
     Scanner reader = new Scanner(System.in); 
     // create here the ArrayList 
     ArrayList<String> words = new ArrayList<String>(); 
     while (true){ 
      System.out.print("Type a word: "); 
      String word = reader.nextLine(); 
      if(!words.contains(word)){ 
       words.add(word); 
      }else{ 
       break; 
      } 


     } 
     System.out.println("You gave the word " + word + " twice"); 

    } 
} 
+0

Добавьте полную стопку, пожалуйста. – Jens

+0

Как я копирую код, я получил ошибку компилятора: «слово не может быть разрешено переменной» в последней строке – Jens

+0

Кроме того, что заметил Йенс, я смог запустить вашу программу без каких-либо ошибок. Я использовал JDK 1.7 –

ответ

0

Ваш код не компилируется. Переменная «слово», которую вы хотите отобразить в конце, не находится в правильной области: вы объявляете ее в цикле while, но пытаетесь использовать ее вне этого цикла. Просто изменить вещи, как это:

import java.util.ArrayList; 
import java.util.Scanner; 

public class MoreThanOnce { 

    public static void main(String[] args) { 
     Scanner reader = new Scanner(System.in); 
     // create here the ArrayList 
     String word; //variable declared before loop 
     ArrayList<String> words = new ArrayList<String>(); 
     while (true){ 
     System.out.print("Type a word: "); 
     word = reader.nextLine(); 
      if(!words.contains(word)){ 
       words.add(word); 
      }else{ 
       break; 
      } 
     } 
     System.out.println("You gave the word " + word + " twice"); 
    } 

Надеется, что это помогает.

Mathias

+0

Это не похоже на работу или. Я получаю ту же ошибку даже с вашими изменениями. – xCargot

+0

Привет, странно, потому что он отлично подходит для меня с этим изменением. Уверены ли вы, что изменения были учтены при попытке. Какой редактор вы используете? Какая версия Java? –

+0

Спасибо за ответы. Я получил его после сохранения его в новый файл. Я не знаю, в чем проблема, но он работает после реализации ваших изменений. Благодарю. – xCargot

0

Declare "Струнный слово" переменная, прежде чем время цикла.

import java.util.ArrayList; 
import java.util.Scanner; 
public class MoreThanOnce { 

public static void main(String[] args) { 
    Scanner reader = new Scanner(System.in); 
    // create here the ArrayList 
    String word; 
    ArrayList<String> words = new ArrayList<String>(); 
    while (true) { 
     System.out.print("Type a word: "); 
     word = reader.nextLine(); 
     if (!words.contains(word)) { 
      words.add(word); 
     } else { 
      break; 
     } 

    } 
    System.out.println("You gave the word " + word + " twice"); 

    } 
} 
+0

По-прежнему получает ту же ошибку после внесения изменений. – xCargot

+0

Я проверяю ваш код в IDE Netbeans и получил выход: Введите слово: rafiq Введите слово: rafiq Вы дважды дали слово rafiq – Rafiq

+0

Да, я получил его работу. Благодарю. – xCargot

0

Вы используете NetBeans?

Если да, тогда есть открытая ошибка

+0

Да, я. Какая ошибка, в частности? – xCargot

+0

проверьте это http://stackoverflow.com/questions/20165965/java-runtimeexception-uncompilable-source-code-erroneous-tree-type – Ankit

+0

здесь ошибка netbeans.org/bugzilla/show_bug.cgi? ID = 199293 – Ankit