我有一个void方法,它应该采用一个String并根据分隔符将其拆分为两个字符串.使用调试器后,该方法似乎正常工作,但我传入的两个空字符串,用于存储结果的方法似乎没有得到更新.我必须在这里做一些愚蠢的事,但任何帮助都表示赞赏!
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];
}
Run Code Online (Sandbox Code Playgroud)
我还没有发布其他方法,但它们都运行良好.这只是解决问题的synToWords方法.非常感谢!
Java 按值传递引用.所以这一行:
wordI = wordI + words[0];
Run Code Online (Sandbox Code Playgroud)
分配一个新的String,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];
}
Run Code Online (Sandbox Code Playgroud)
并在您的主要代码中:
String[] words = { "", "" };
synToWords(synFR.getLine(3), words);
System.out.println(words[0] +" " + words[1]);
Run Code Online (Sandbox Code Playgroud)
或者你可以简单地返回一个String数组:
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]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |