首页 > 解决方案 > 带有条件的 Java 循环

问题描述

我在 Java 方面没有经验,但我需要在 KNIME 中创建 Java 片段节点。

我正在尝试编写一个基于特定条件创建计数器/迭代器的短循环。我设法编写了 IF THEN ELSE 部分,但我想知道如何将其放入循环中:

out_user_session_counter = 1;

if (c_session_end.equals("session end")) {
    out_user_session_counter = out_user_session_counter + 1; 
} else {
    out_user_session_counter = out_user_session_counter + 0;
}

这个想法是:每次c_session_end.equals("session end") thenout_user_session_counter应该增加 1

UPD .:这是带有循环结果的数据模型的屏幕截图(结果不正确):

示例截图

正确的预期结果将是 1 1 1 1 2 2 3 3 3 3 3 而不是 1 1 1 1 11 1 11 1 1 1 1

标签: javaknime

解决方案


您需要循环计数器在 Java Snippet 中的行之间保持不变。为此,您可以在//Your custom variables:代码片段的一部分中定义它:

int sessionCounter=0;

然后在//Enter you code here:部分:

if("session end".equalsIgnoreCase(c_column2)){
    sessionCounter++;
}

out_user_session_counter = sessionCounter;

如图所示,带有“会话结束”的行将包含递增的计数器。如果您希望它包含旧计数器,请更改代码段,使上面的最后一行位于if语句之前。

您不需要将它放在 KNIME 中的循环中 - 片段的表达式部分已经为每个输入行按顺序计算。为清楚起见,在片段对话框中显示如下

在此处输入图像描述


推荐阅读