在我讨论这个问题之前,让我来描述代码应该解决的问题。
代码应该使用以下语法从文件中获取输入:
1,2,3,4;5
代码应该采用分号后面的整数并将其分配给变量。然后代码应该采用分号之前的值,并找到并返回所有两对整数,这些整数与分号后的值相加。
示例:如果输入为
1,2,3,4;5
然后输出应该是
1,4;3,2
我遇到的问题是我的String result
没有被代码中的嵌套for
循环编辑。我没有编译时或运行时错误。它只是不编辑String result
,我无法弄清楚原因。你们可以看看吗?
import java.util.*;
import java.io.*;
public class NumberPairs2 {
public static void main (String[] args) throws IOException {
File file = new File("C:/Users/James/Desktop/txt.txt"); // Takes in a file as input
BufferedReader buffer = new BufferedReader(new FileReader(file));
String line;
while ((line = buffer.readLine()) != null) {
String result = ""; // creates an empty string
line = line.trim(); // set the file contents equal to null
if (line.length() != 0){
int sumTest = Integer.parseInt(line.substring(line.indexOf(";") + 1));
String[] intArray = line.split(";");
String[] intArray2 = intArray[0].split(",");
for (int i = 0; i < intArray2.length - 1; i++){
for(int j = i + 1; i < intArray2.length; i++){
if (intArray2[i] != "," && intArray2[j] != "," && Integer.parseInt(intArray2[i]) + Integer.parseInt(intArray2[j]) == sumTest){
result += intArray[i] + ", " + intArray[j] + ";";
System.out.println(result);
}
}
}
//int compare = ()
}
else {
result = null;
System.out.println(result);
}
}
}
}
答案 0 :(得分:0)
您需要使用intArray2[i]
&amp;添加到intArray2[j]
而不是result
&amp; intArray[i]
时{0}} intArray[j]
。您尝试在ArrayIndexOutOfBoundsException
中使用intArray2
索引时,您的代码目前正在获得intArray
。
for (int i = 0; i < intArray2.length - 1; i++){
for(int j = i + 1; j < intArray2.length; j++){
if (Integer.parseInt(intArray2[i]) + Integer.parseInt(intArray2[j]) == sumTest){
result += intArray2[i] + ", " + intArray2[j] + ";";
System.out.println(result);
}
}
}
删除最后一个分号的一个选项是追加到结果如下
//if not 1st pair, add semicolon
if(!result.equals("")){
result += "; ";
}
result += intArray2[i] + ", " + intArray2[j];
答案 1 :(得分:0)
这可能会有所帮助
for (int i = 0; i < intArray2.length - 1; i++){
for(int j = i + 1; j < intArray2.length; j++){
if (Integer.parseInt(intArray2[i]) + Integer.parseInt(intArray2[j]) == sumTest){
result += intArray2[i] + ", " + intArray2[j] + ";";
}
}
}
System.out.println(result);