【问题标题】:Getting returned value from method to use in for loop从方法中获取返回值以在for循环中使用
【发布时间】:2020-01-02 22:54:10
【问题描述】:

这是基本的,但我找不到答案...我在我的 Main 类中使用 3 个参数调用方法 Kmeans(centers, dataset, k)。该方法返回中心。如何在另一个类中使用中心的返回 for 循环?

从 Main 类调用方法...

concurrentKmeans(centers, dataset, k);

方法...

public static List<TockaXY> kmeans(List<TockaXY> centers, List<TockaXY> dataset, int k) {
      boolean converged;
      do {
          List<TockaXY> noviCentri = noviCentri(dataset, centers);
          double dist = dobiRazdaljoCenters(centers, noviCentri);
          centers = noviCentri;
          converged = dist == 0;
      } while (!converged);
      return centers;
  }

尝试在 for 循环中使用它来迭代 List&lt;TockaXY&gt; ...

public class WebviewLoadListner implements ChangeListener<State>{

    @Override
    public void changed(ObservableValue<? extends State> observable, State from, State to) {
        if (to == State.SUCCEEDED)
        {
            SampleController.engine.executeScript("jumpTo("+46.641389+","+49.756667+","+10+")");
            for(int i =0; i<Main.kmeans(centers, dataset, k); i++){

            }

        }     
    }

}

【问题讨论】:

  • 您的 for 循环语法不正确。试试这个:for(TockaXY tock : Main.kmeans(centers, dataset, k)) {}

标签: java arrays methods parameter-passing


【解决方案1】:

更好的方法是调用方法并将其设置为局部变量,然后在 for 循环中使用它。在 for 循环条件中使用函数调用并不理想,因为每次对其求值时,每次循环迭代都会调用相同的函数,这会影响性能。

SampleController.engine.executeScript("jumpTo("+46.641389+","+49.756667+","+10+")");

List<TockaXY> list = Main.kmeans(centers, dataset, k);
for(int i =0; i< list.size(); i++){
    //Use list.get(i) for each individual element in the list
}

List<TockaXY> list = Main.kmeans(centers, dataset, k);
for(TockaXY toc : list) {
    //toc will give individual element in the list
}

使用 JDK 8,我们可以使用流来访问元素

List<TockaXY> list = Main.kmeans(centers, dataset, k);
list.stream().forEach(toc -> {
   //Your operation with toc
});

【讨论】:

    【解决方案2】:

    在您的 for 循环中,您正在比较两种不同的类型 intList&lt;TockaXY&gt;。我认为您的意思是使用列表的size()

    i&lt;Main.kmeans(centers, dataset, k).size(); 而不是i&lt;Main.kmeans(centers, dataset, k);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 2015-08-08
      • 2022-01-15
      相关资源
      最近更新 更多