在循环中连接两个int?

时间:2014-10-24 19:23:14

标签: java

我有一个十进制到二进制转换器,但不能连接bitNumholder,因为它们只是简单地互相添加。

我知道我可以解析它,但每次循环时我都要解析它吗?

public class DecToBin {
    public static void main(String[] args){
       int no1;
       int binNum = 0;

       Scanner s = new Scanner(System.in);
       no1 = s.nextInt();

       while(no1 > 0){  
           int holder = no1 % 2;
           System.out.println(holder);
           binNum =  holder + binNum;
           no1 /= 2;            
       }
       System.out.println("Your number is binary is: " + binNum);   
    }
}

3 个答案:

答案 0 :(得分:2)

我知道原因。由于用户想要连接字符串,您可以使用Java提供的concat()方法。在找到二进制文件时,我们应该在打印时反转字符串,你必须知道我们为什么要反转字符串。他们使用以下代码:

import java.util.*;

 public class DecToBin {
 public static void main(String[] args){

    int no1;

    Scanner s = new Scanner(System.in);
    no1 = s.nextInt();




    String binNum = "";
    while(no1 > 0){

        int holder = no1 % 2;
        System.out.println(holder);
        binNum.concat(Integer.toString(holder));
        no1 /= 2;



    }
    String actual = new StringBuilder(binNum).reverse().toString();
    System.out.println("Your number is binary is: " + actual);

   }
}

答案 1 :(得分:1)

将bitNum设为字符串并执行:

binNum = holder + binNum;

你不能连接整数(你可以添加),但你可以连接字符串。当您使用String连接时,int将自动转换为String。

答案 2 :(得分:1)

更好的实施:

Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();

StringBuilder builder = new StringBuilder();
while (num > 0) {
    builder.append(num % 2);
    num /= 2;
}
String actual = builder.reverse().toString();
System.out.println("Your number is binary is: " + actual);

改进:

  • 使用更有意义的名称
  • 在使用变量之前声明变量。特别适合同时初始化
  • 使用构建器有效地构建二进制字符串