这是来自学校的作业问题:创建一个名为toBinary的递归方法,它将一个整数作为参数,并以二进制形式输出等效项。
这是我的代码:
import java.util.*;
class MethodAssign6{
static void toBinary(int a){
if(a==0){
System.out.print("theArrayOrStringIWant");
}
else{
System.out.println(a%2);
toBinary(a/2);
}
}
public static void main(String[]args){
toBinary(24);
}
}
正如您所看到的,当问题只希望我将一个整数作为参数时,我不知道如何创建一个数组来保存所有的%2值。任何人请帮助我,我非常感谢。
答案 0 :(得分:3)
我认为你走在正确的轨道上 - 但是你现在的方法会向后打印这个数字。尝试进行递归调用,然后然后打印:
static void toBinary(int a){
if(a!=0) {
toBinary(a/2);
System.out.print(a%2);
}
}
您还可以使用String获得类似的效果:
static String toBinary(int a){
if(a==0) {
return "";
}
else {
return toBinary(a/2) + (a%2);
}
}
public static void main(String[]args){
System.out.println(toBinary(24));
}
答案 1 :(得分:1)
通常,像这样的递归方法将具有公共方法以及用于完成计算的私有方法。因此public方法接受一个整数,然后设置数组以保存值。私有数组采用整数,也使用当前数组,因此它可以将它的值添加到数组中。最后,当private方法返回时,public方法将解析数组并返回结果。
答案 2 :(得分:1)
如果您只需打印这些位,则实际上并不需要将它们保存在数组中。您可以随时使用System.out.print。确保你注意打印电话的顺序和递归电话,以免你向后打印号码。
答案 3 :(得分:-1)
// static String[] valsbyte = new String[10]; // global variable if you return a string
static byte[] valsbyte = new byte[10]; // global variable
// static String[] toBinary(int a){ // if you return a string
static byte[] toBinary(int a){
n++;
if(n>10){ // check recursion to jump over process and internal method call
// valsbyte[n] = a%2; // if you reurn a string
valsbyte[n] = new Integer(ax).byteValue(); // convert to byte
//LAST LINE OF METHOD
return valsbyte[n];