嗨我从某个人那里获得了这个工作代码,它的工作正常,我发现这个特定的代码正在更新temp [] []的值。但是我无法想象我们在temp [i] [j] =更新的地方是如何运作的。 因为该方法没有返回任何东西,并且没有赋值给temp [] []。我看到的只是update_table [] [] = temp;
当我尝试在循环之前和循环之后打印temp时,数组中会发生变化。
void var_init(String to_match_x,String to_match_y, String to_replace_x, String to_replace_y,String[][] temp)
{
String t_match_x=to_match_x;
String t_replace_x=to_replace_x;
String t_match_y=to_match_y;
String t_replace_y=to_replace_y;
//String str=string;
//add function to count variables find duplicates and assign values to them
line();
System.out.println("text to match:"+t_match_x);
System.out.println("text to replace with:"+t_replace_x);
System.out.println("text to match:"+t_match_y);
System.out.println("text to replace with:"+t_replace_y);
String[][] table_update=temp;
line();
System.out.println("starting fetching rules for updating variable");
line();
for(int i=0;i<table_update.length;i++)
for(int j=0;j<table_update[0].length;j++)
{
String replace_text=table_update[i][j];
System.out.println(replace_text);
String new_str;
new_str=replace_text.replaceAll("\\"+t_match_y,t_replace_y);
new_str=new_str.replaceAll("\\"+t_match_x,t_replace_x);
table_update[i][j]=new_str;
System.out.println(table_update[i][j]);
line();
}
}
答案 0 :(得分:0)
你正在考虑一个名为temp
String[][] table_update=temp;
更新后table_update
数组temp
也会更新。如果您不希望这样做,请复制temp
这样的数组
String[][] table_update = temp.clone();
答案 1 :(得分:0)
String[][] table_update=temp;
这意味着table_update和temp都具有相同的引用,因此实际上它们都是相同的数组,如果其中一个更新,则预期另一个也要更新。 您可以创建一个新的数组(temp)并将table_update克隆到它,以解决您的问题。