You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何反向打印字符串?整数转二进制无方法实现问题求助

嘿,这就帮你搞定这两个问题~

反向打印字符串的方法

这里整理了几种常用的方式,分基础手动实现和借助内置方法两类:

  • 从后往前循环遍历:最直观的手动实现方式,直接操作字符串索引,逐个输出或拼接反向字符串
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:00:53