Java 将字符串转换为stringbuilder对象,以便对字符串应用反向选项
基本上,我正在将十进制转换为二进制,为此我定义了一个方法Java 将字符串转换为stringbuilder对象,以便对字符串应用反向选项,java,Java,基本上,我正在将十进制转换为二进制,为此我定义了一个方法conversionBinaryDecimal(),在该方法中,我将一个整数n传递给它,每次我将n除以2,然后通过串联将余数添加到字符串变量中。 但当我添加余数时,它是以相反的顺序存储的。例如:6二进制是110,但它存储为011。所以,我想反转字符串以得到准确的答案。为此,我使用StringBuilder将其转换为可变字符串,但当我对其使用反向内置方法时。上面写着配置分配 我试着到处搜索,想知道为什么会这样?但我不明白 package co
conversionBinaryDecimal()
,在该方法中,我将一个整数n传递给它,每次我将n除以2,然后通过串联将余数添加到字符串变量中。
但当我添加余数时,它是以相反的顺序存储的。例如:6二进制是110,但它存储为011。所以,我想反转字符串以得到准确的答案。为此,我使用StringBuilder将其转换为可变字符串,但当我对其使用反向内置方法时。上面写着配置分配
我试着到处搜索,想知道为什么会这样?但我不明白
package conversionbinarydecimal;
import java.lang.*;
import java.io.*;
import java.util.*;
import java.util.Scanner;
public class ConversionBinaryDecimal {
static void decimalToBinary(int n){
String inBinary = "";
while(n>0){
int temp = (n%2);
inBinary += temp;
n=n/2;
}
StringBuilder input1 = new StringBuilder();
input1.append(inBinary);
input1 = input1.reverse();
System.out.println(inBinary);
}
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
decimalToBinary(n);
}
}
我得到编译器错误。
预期输出是任意数字的二进制。例如:6:110您没有打印出
input1
字符串,而是打印出inBinary
按如下方式更改代码:
input1 = input1.reverse();
System.out.println(input1);
打印正确的变量:
import java.util.Scanner;
public class Test {
static void decimalToBinary(int n){
String inBinary = "";
while(n>0){
int temp = (n%2);
inBinary += temp;
n=n/2;
}
StringBuilder input1 = new StringBuilder();
input1.append(inBinary);
input1 = input1.reverse();
System.out.println(input1);// ISSUE was this line
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
decimalToBinary(6);
}
}
如果这不是一个面试问题,那么为什么不使用预定义的方法,而不是编码太多:)
欢迎来到堆栈溢出。当您遇到编译器错误时,请始终将错误本身包括在问题中,包括错误所在的位置。我怀疑问题出在
input1=input1.reverse()因为StringBuilder.reverse()
的返回类型是AbstractStringBuilder
。您只需调用input1.reverse()
并忽略返回值,因为它的反向位置正确。您应该打印“input1”而不是“inBinary”!您的代码似乎没有CompileTimeError。@Raghava并且您确定出现编译错误吗?您应该使用StringBuilder,而不是在循环中串联字符串。字符串连接每次都创建一个新的字符串对象,并在下一次迭代中丢弃它,而使用StringBuilder在大多数情况下都会保留相同的对象。错误的是,内部存在……即使我打印了input1,也存在相同的错误。我尝试了不同的方法,所以我得到了答案。
System.out.println(Integer.toBinaryString(6));