Java如何批量接收用户输入数字存入数组并调用三元组查找方法
实现方法
你只需要补全控制台输入读取、字符串转整型数组的逻辑即可,不需要修改已经写好的三元组查找方法。
核心实现步骤
- 用
Scanner读取用户输入的整行空格分隔数字字符串 - 用正则按空白字符分割字符串,得到每个数字对应的字符串片段
- 将字符串片段逐个转为int类型存入整型数组
- 把生成的整型数组传入你写好的
getArrayTriplets方法执行即可
完整可运行代码
import java.util.Arrays; import java.util.Scanner; public class TripletChecker { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入空格分隔的数字:"); // 读取整行输入,去除首尾多余空格 String rawInput = scanner.nextLine().trim(); scanner.close(); // 按1个或多个连续空白字符分割,兼容多空格、制表符分隔的场景 String[] numSegments = rawInput.split("\\s+"); int[] inputArray = new int[numSegments.length]; for (int i = 0; i < numSegments.length; i++) { inputArray[i] = Integer.parseInt(numSegments[i]); } // 调用已实现的三元组查找方法 getArrayTriplets(inputArray); } private static void getArrayTriplets(int[] inputArray) { System.out.println("Input Array : "+Arrays.toString(inputArray)); System.out.println("Array triplets with sum of first two elements equals third :"); for (int i = 0; i < inputArray.length-2; i++) { for (int j = i+1; j < inputArray.length-1; j++) { for (int k = j+1; k < inputArray.length; k++) { if (inputArray[i] + inputArray[j] == inputArray[k]) { System.out.println("["+inputArray[i]+", "+inputArray[j]+", "+inputArray[k]+"]"); } else if (inputArray[i] + inputArray[k] == inputArray[j]) { System.out.println("["+inputArray[i]+", "+inputArray[k]+", "+inputArray[j]+"]"); } else if (inputArray[j] + inputArray[k] == inputArray[i]) { System.out.println("["+inputArray[j]+", "+inputArray[k]+", "+inputArray[i]+"]"); } } } } } }
注意事项
分割字符串时使用
\\s+作为匹配规则,比直接传" "做分割兼容性更强,即使用户输入多个连续空格、误输入制表符分隔,也不会产生空字符串片段导致Integer.parseInt报错。
如果需要做输入合法性校验,可以在类型转换外层加try-catch捕获NumberFormatException,在用户输入非数字内容时给出提示。
用你给出的示例输入22 14 50 62 36 40 58 71 90测试,代码会输出所有符合要求的三元组,和预期结果完全一致。
内容的提问来源于stack exchange,提问作者Dean Wincester
相关产品推荐
相关产品推荐

