gpt4 book ai didi

java - Java中使用变量引用数组

转载 作者:行者123 更新时间:2023-11-30 03:28:15 26 4
gpt4 key购买 nike

请耐心等待,我已经使用 Java 2 天了,但遇到了一些障碍。

我正在使用 Talend 使用 tMemorize 和 tJava 组件执行计数,但这对于 Java 开发人员来说可能是一个问题。我之前发布过在 joblet 中使用此方法的问题,我的新问题与 Java 更相关,可以在此处查看: using Joblets in talend with tMemorize and tJavaFlex

我需要引用java代码talend生成的数组。我无法直接引用此元素,因为在多个 joblet 中使用 tJavaFlex 时出现问题:Java 在每次使用 joblet 时都会重命名它们。

了解我的代码在正常情况下如何工作(不包括 joblet 的使用)可能会很有用。

int counter = 1;

if (EnquiryID_mem_1_tMemorizeRows_1[0].equals(EnquiryID_mem_1_tMemorizeRows_1[1]))
{
counter++;
}
row3.counter = counter;

EnquiryID_mem_1_tMemorizeRows_1[0]EnquiryID_mem_1_tMemorizeRows_1[1] 是我需要引用的内容。

为了克服这个问题,我编写了以下代码。

String string = currentComponent;
String[] parts = string.split("_");
String part1 = parts[0];
String part2 = parts[1];
String joblet = part1+'_'+part2;
String newrow = "EnquiryID_"+joblet+"_tMemorizeRows_1"

if (newrow[0].equals(newrow[1]))
{
counter++;
}
row3.counter = counter;

但是我收到以下错误:

The type of the expression must be an array type but it resolved to String

我知道 newrow 变量是一个字符串,我用它来引用一个数组。我在网上广泛搜索以寻求解决方案,但我无法解决。有人可以帮我吗?

谢谢

这是我的代码应该引用的talend代码。我已将其从我正在使用的 currentComponent 更改为未直接使用的 currentComponent 中获取。

                        currentComponent = "mem_1_tMemorizeRows_1";

// row1
// row1

if (execStat) {
runStat.updateStatOnConnection("row1" + iterateId,
1, 1);
}

for (int i_mem_1_tMemorizeRows_1 = iRows_mem_1_tMemorizeRows_1 - 1; i_mem_1_tMemorizeRows_1 > 0; i_mem_1_tMemorizeRows_1--) {
EnquiryID_mem_1_tMemorizeRows_1[i_mem_1_tMemorizeRows_1] = EnquiryID_mem_1_tMemorizeRows_1[i_mem_1_tMemorizeRows_1 - 1];
}
EnquiryID_mem_1_tMemorizeRows_1[0] = row1.EnquiryID;

mem_1_row2 = row1;

tos_count_mem_1_tMemorizeRows_1++;

/**
* [mem_1_tMemorizeRows_1 main ] stop
*/

/**
* [mem_1_tJavaFlex_1 main ] start
*/

currentComponent = "mem_1_tJavaFlex_1";

// mem_1_row2
// mem_1_row2

if (execStat) {
runStat.updateStatOnConnection("mem_1_row2"
+ iterateId, 1, 1);
}

mem_1_row3.QuoteID = mem_1_row2.QuoteID;
mem_1_row3.EnquiryID = mem_1_row2.EnquiryID;

if (EnquiryID_mem_1_tMemorizeRows_1[0]
.equals(EnquiryID_mem_1_tMemorizeRows_1[1])) {
rower++;
}
mem_1_row3.rower = rower;

tos_count_mem_1_tJavaFlex_1++;

/**
* [mem_1_tJavaFlex_1 main ] stop
*/

/**
* [mem_1_tMap_1 main ] start
*/

currentComponent = "mem_1_tMap_1";

感谢迄今为止提供帮助的所有人。

最佳答案

这个

if (newrow[0].equals(newrow[1]))

尝试选取数组newrow 的第一个和第二个元素。不幸的是,您将 newrow 声明为

String newrow = "EnquiryID_"+joblet+"_tMemorizeRows_1"

这不是一个数组,而是一个字符串if 中的语法不适用于 String。我不确定你想做什么,但 if 检查不起作用。

编辑:如果您尝试从字符串中获取 char,则需要使用 charAt(index)

如果您想将 newrow 视为数组,则必须将其声明为数组并向其传递适当的元素。

编辑2:我认为您正在尝试将joblet中的实际数据传递到newrow:

String newrow = "EnquiryID_"+joblet+"_tMemorizeRows_1"

但是这里发生的情况是,所有内容都连接在一个 String 中,因此您需要弄清楚要查找的数据(part[0] >part[1] 我假设)存在于该 String 中,因此您可以将它们取出(基本上哪些索引包含您正在查找的值)。

newrow 在完成该分配后将如何处理的示例:

"EnquiryID_part1_part2_tMemorizeRows_1"

因此 "part1" 将从索引 10 开始,并在索引 14 结束。我在这里仅使用 "part1",但它会具有存储的任何值在 part1 变量中。

如果您可以向我们展示您期望的外观,那将会有所帮助。

关于java - Java中使用变量引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29676372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com