2016-11-06 61 views
0
// inside my class 
public void playRound() { 
     Iterator<Player> itr = players.iterator(); 
     while(itr.hasNext()){ 
      Player player =itr.next(); 
      player.play(par); 
     } 
     // Supply this code! 
    } 

它说:异常在线程“主要” java.lang.Error的:未解决的问题,编译: 迭代器不能被解析为一个类型迭代器是不是内置函数,为什么我必须导入它?

是不是迭代器内置的功能?

我不得不进口:

import java.util.Iterator; 

如果我想解决这个问题,有没有办法来避免进口迭代器。 为什么我不能简单地导入迭代器,尽管它会为我节省很多时间,是因为对于我的项目,我不允许导入除之外的其他任何东西import java.util.ArrayList;

此外,我使用eclipse写我的代码。

+3

'Iterator'是一个类。您需要直接或间接导入您使用的每个类 – TheLostMind

+1

*我不允许导入除import java.util.ArrayList之外的任何其他类; * - 那么也许不要使用Iterator? – Li357

+0

你可以说java.util.Iterator 但我想这不是练习的目标。它看起来像老师或提供片段的人忘记了导入它,似乎不是你必须提供的代码的一部分。 – maraca

回答

2

总之 - 没有。 Iterator没有什么“神奇的”。这是从java.util包中的类,如果你想使用它,你要么导入或引用它的全名:

java.util.Iterator<Player> itr = players.iterator(); 

但我想这也是你的要求禁止。相反,你可以只使用一个加强for循环:

for (Player player : players) { 
    player.play(par); 
} 

编辑:
作为@yshavit在评论中指出,由于playersList,不是任何旧Iterable,你可以直接通过访问元素他们的指数,这意味着你还可以使用一个“老土” for循环:

for (int i = 0; i < players.size(); ++i) { 
    players.get(i).play(par); 
} 
+0

或者迭代遍历索引的非增强型'for'。根据问题给出的内容,很难知道老师想要哪一个。 – yshavit

0

它建在Java的主库中。不是java本身。

在Java中,每个类都必须导入或引用才能使用。它是否内置或无关紧要。

的选项有:

  1. 不要使用迭代器。使用arraylist代替它。
// inside my class 
public void playRound() { 
     ArrayList<Player> itr = new ArrayList<Player>(); 
     while(itr.listIterator().hasNext()){ 
      Player player =itr.listIterator().next(); 
      player.play(par); 
     } 
     // Supply this code! 
    } 
  • 你的另一种选择是引用它,而不是直接导入的。
  • // inside my class 
    public void playRound() { 
         java.util.Iterator<Player> itr = layers.iterator();; 
         while(itr.hasNext()){ 
          Player player =itr.next(); 
          player.play(par); 
         } 
         // Supply this code! 
        } 
    

    我建议第一个选项,因为第二个可能仍然被认为是进口。

    +0

    你的解决方案很有意义。不过,我对你的意思有些困惑,它是在Java的主库中构建的。不是java本身。'? – Maggie

    +0

    Java是一种语言。不包括任何课程。它仅包含基元类型。 – BernardoGO

    +3

    您不必在'java.lang'中显式导入类。你可以使用'String','StringBuilder','Exception'等,而不需要'import'语句。 – ajb

    1

    相反迭代器使用的:

    // inside my class 
        public void playRound() { 
         for (Player player : players) { 
           player.play(par); 
         } 
         // Supply this code! 
        } 
    

    这是一样的事情,只是没有迭代器。

    1

    java.util.Iterator内置于JDK(从版本1.2),但你需要明确地导入,原因是只有java.lang包中的类被默认导入的,而不是其他的包,即,因为Iterator类是java.util包你需要明确import它。

    相关问题