Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为stringbuilder对象,以便对字符串应用反向选项_Java - Fatal编程技术网

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));