如何反向打印字符串?整数转二进制无方法实现问题求助
嘿,这就帮你搞定这两个问题~
反向打印字符串的方法
这里整理了几种常用的方式,分基础手动实现和借助内置方法两类:
- 从后往前循环遍历:最直观的手动实现方式,直接操作字符串索引,逐个输出或拼接反向字符串
String str = "hello"; // 直接打印反向字符 for (int idx = str.length() - 1; idx >= 0; idx--) { System.out.print(str.charAt(idx)); } // 或者拼接成反向字符串后再输出 String reversedStr = ""; for (int idx = str.length() - 1; idx >= 0; idx--) { reversedStr += str.charAt(idx); } System.out.println(reversedStr);
- 利用栈的先进后出特性:把每个字符压入栈,再逐个弹出,天然就是反向顺序
String str = "hello"; Stack<Character> stack = new Stack<>(); for (char c : str.toCharArray()) { stack.push(c); } while (!stack.isEmpty()) { System.out.print(stack.pop()); }
- 递归实现:通过递归逐步缩小字符串范围,每次输出最后一个字符
public static void reversePrint(String str) { if (str.isEmpty()) return; System.out.print(str.charAt(str.length() - 1)); reversePrint(str.substring(0, str.length() - 1)); } // 调用示例:reversePrint("hello");
- 借助内置方法(如果允许的话):用
StringBuilder的reverse()方法可以一行搞定
String str = "hello"; System.out.println(new StringBuilder(str).reverse().toString());
整数转二进制(不使用任何反转方法)
你的代码目前是把余数拼到字符串后面,所以最后需要反转才能得到正确结果。其实换个思路,每次把新得到的余数放到结果的最前面,就能直接得到正确顺序的二进制,完全不用反转操作。给你修改后的完整代码:
import java.util.Scanner; public class IntegerToBinary { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter A Positive Number:"); int i = sc.nextInt(); int j = i; // 备份原数 String binaryStr = ""; // 处理输入0的特殊情况,避免无输出 if (j == 0) { binaryStr = "0"; } while (j != 0) { int k = j % 2; j /= 2; // 关键:把当前余数放到已有字符串的最前面 binaryStr = k + binaryStr; } System.out.println("Binary representation of " + i + " is: " + binaryStr); sc.close(); } }
如果不想用字符串拼接,也可以把余数存到数组里,最后从后往前遍历数组输出,同样不需要反转方法:
import java.util.Scanner; public class IntegerToBinary { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter A Positive Number:"); int i = sc.nextInt(); int j = i; // int类型最多32位,所以数组长度设为32足够 int[] remainders = new int[32]; int index = 0; if (j == 0) { System.out.println("Binary representation of " + i + " is: 0"); sc.close(); return; } while (j != 0) { remainders[index] = j % 2; j /= 2; index++; } // 从最后一个存入的余数开始往前输出 System.out.print("Binary representation of " + i + " is: "); for (int idx = index - 1; idx >= 0; idx--) { System.out.print(remainders[idx]); } System.out.println(); sc.close(); } }
内容的提问来源于stack exchange,提问作者ahto design
相关产品推荐
相关产品推荐

