Java按指定拆分大小将字符串拆分并排列成行列的问题求助
解决方案:按指定拆分大小行列排列字符串
你的代码已经搞定了输入校验和基础的字符处理,现在只需要调整打印逻辑,就能实现按行列排列的效果啦。我给你两种实用的实现方式,选你顺手的来用:
方法1:在现有循环中添加换行判断
直接在你遍历字符数组的循环里,每打印splitSize个字符就触发换行,几乎不用改动现有代码结构:
Scanner lagoScan = new Scanner(System.in); System.out.println("Enter String:"); String letters = lagoScan.next(); final int numInLetters = letters.length(); System.out.println("Enter Split Size:"); int splitSize = lagoScan.nextInt(); if (numInLetters % splitSize == 0) { System.out.println("The Given String is: " + letters); System.out.println("The Split String are:"); String[] in_array = letters.split(""); for (int k = 0; k < in_array.length; k++) { System.out.print(" " + in_array[k]); // 因为k从0开始计数,所以用k+1判断是否达到拆分大小,满足就换行 if ((k + 1) % splitSize == 0) { System.out.println(); } } } else { System.out.println("Given input is not divisible by input size."); }
方法2:用substring分段打印(更简洁)
如果不想拆分成字符数组,直接用substring按段截取字符串,每段长度为splitSize,逐段打印的逻辑更直观:
Scanner lagoScan = new Scanner(System.in); System.out.println("Enter String:"); String letters = lagoScan.next(); final int numInLetters = letters.length(); System.out.println("Enter Split Size:"); int splitSize = lagoScan.nextInt(); if (numInLetters % splitSize == 0) { System.out.println("The Given String is: " + letters); System.out.println("The Split String are:"); // 计算需要分成多少行 int rows = numInLetters / splitSize; for (int i = 0; i < rows; i++) { // 截取对应段落的子串 String segment = letters.substring(i * splitSize, (i + 1) * splitSize); // 保持和你原有代码一致的字符空格格式 for (char c : segment.toCharArray()) { System.out.print(" " + c); } System.out.println(); } } else { System.out.println("Given input is not divisible by input size."); }
测试示例
比如输入字符串ABCDEFGH,拆分大小4,输出效果如下:
The Given String is: ABCDEFGH The Split String are: A B C D E F G H
内容的提问来源于stack exchange,提问作者Joshua Lagos
相关产品推荐
相关产品推荐

