gpt4 book ai didi

java - void 方法不会操作字符串

转载 作者:行者123 更新时间:2023-12-01 07:11:01 27 4
gpt4 key购买 nike

我有一个 void 方法,它应该接受一个字符串并根据分隔符将其分成两个字符串。使用调试器后,该方法似乎工作正常,但我为存储结果的方法传入的两个空字符串似乎没有更新。我一定在这里做了一些白痴的事情,但感谢您的帮助!

public static void main(String[] args) {
String dictFile = "/Users/simonrhillary/Desktop/Dictionary(3).txt";
String synFile = "/Users/simonrhillary/Desktop/Synonyms(2).txt";
fileReader dictFR = new fileReader();
fileReader synFR = new fileReader();
dictFR.filePath = dictFile;
synFR.filePath = synFile;
dictFR.openFile(dictFile);
synFR.openFile(synFile);
String[] dictionary = dictFR.fileToArray();
String[] synonyms = synFR.fileToArray();
String regx = "^[aflmptu]+$";
String regexTemplate = "^[]+$";
String word1 = "";
String word2 = "";
synToWords(synFR.getLine(3), word1, word2);//error seems to be here.
//word1 and word 2 stay ""
System.out.println(word1 +" " + word2);
printArray(findCombos(dictionary, word1, word2));

}

public static void synToWords(String syn, String wordI, String wordII){
String[] words = syn.split("\\t");
wordI = wordI + words[0];
wordII = wordII + words[1];
}

还有其他方法我没有发布,但它们都工作正常。这只是 synToWords 方法的问题所在。非常感谢!

最佳答案

Java passes references by value 。所以这一行:

wordI = wordI + words[0];

将一个新字符串分配给wordI,但它只是发生更改的引用的本地(方法内)副本。原始的 word1 变量仍然引用原始的 String。

要使其正常工作,您可以使用数组:

public static void synToWords(String syn, String[] word1And2){
String[] words = syn.split("\\t");
word1And2[0] = word1And2[0] + words[0];
word1And2[1] = word1And2[1] + words[1];
}

并在您的主代码中:

String[] words = { "", "" };
synToWords(synFR.getLine(3), words);
System.out.println(words[0] +" " + words[1]);

或者您可以简单地返回一个字符串数组:

public static String[] synToWords(String syn){
String[] words = syn.split("\\t");
return new String[] {words[0], words[1]};
}

String[] words = synToWords(synFR.getLine(3));
System.out.println(words[0] +" " + words[1]);

关于java - void 方法不会操作字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201943/

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