gpt4 book ai didi

java - 您如何(绕过)动态命名变量?

转载 作者:行者123 更新时间:2023-11-29 07:18:43 25 4
gpt4 key购买 nike

我不确定我是否使用了正确的术语,所以我会尽量让我的问题具体化。也就是说,我想这个问题一直都在出现,并且可能有几种不同的方法来处理它。

假设我有一个名为 main 的数组( vector ),包含 1980 年到 2000 年之间的 1000 个随机年份,我想从中创建 20 个单独的数组( vector )。这些数组将被命名为 array1980array1981 等,长度也为 1000,但包含 1,其中名称中的索引等于 中的相应元素>main 和其他地方的 0s。换句话说:

for(int i=0; i<1000; i++){
if(main[i]==1980){
array1980[i]=1;
} else {
array1980[i]=0;
}

当然,我不想写 20 个这样的变量名,所以如果我能在循环中创建新的变量名就更好了。问题是您通常不能将变量名分配给带有运算符的表达式,例如,

String("array"+ j)=... # returns an error

我目前使用最多的是 Matlab,但我也可以使用 Java、C++ 和 Python 做一些事情,我正在尝试了解人们通常如何解决这个问题。理想情况下,我希望能够以某种方式操纵单个变量(或子数组),使年份保留在变量名(或数组索引)中,以减少出错的机会并使事情更容易处理一般来说。

如果有任何帮助,我将不胜感激。

最佳答案

boolean main[][] = new boolean[1000][20];
for (int i=0; i < 1000; i++) {
array[i][main[i]-1980] = true;
}

在许多情况下, map 将是一个很好的解决方案,但在这里您可以使用 2 维 boolean 数组,因为大小在 (0-20) 之前是已知的并且是连续的,并且是可数的。

有些语言会将 boolean 数组的每个元素初始化为 false,因此您只需将值设置为 truemain[i] 指向该值.

由于 main[i] 返回从 1980 到 2000 的数字,1980-main[i] 将返回 1980-1980=0 到 2000-1980=20。当然,要找到您的值,您必须将 1980 添加到第二个索引。

关于java - 您如何(绕过)动态命名变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169573/

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