Java 使用堆栈将整数转换为二进制
我对编程还不熟悉,但仍在努力想办法解决这个问题 我试图将一些余数推到堆栈上,然后弹出堆栈以给出二进制数字的输出Java 使用堆栈将整数转换为二进制,java,binary,stack,Java,Binary,Stack,我对编程还不熟悉,但仍在努力想办法解决这个问题 我试图将一些余数推到堆栈上,然后弹出堆栈以给出二进制数字的输出 import java.util.Stack; public class BinaryNumber { private static Stack<Integer> stack = new Stack<Integer>(); private static int remainder; public static String binaryNum
import java.util.Stack;
public class BinaryNumber {
private static Stack<Integer> stack = new Stack<Integer>();
private static int remainder;
public static String binaryNum(int number){
while (number > 0){ //while number > 0
if ((number % 2 != 1) && (number % 2 != 0)){ //if number is not equal to zero or 1
number = (number-1); //update number to one less
int remainder = 1;
}
else{
int remainder = number % 2; //get the remainder
}
stack.push(new Integer(remainder));
number /= 2;
}
stack.push(new Integer(1));
return "hello".toString(); //just a test
}
public static void printStack(){
while (!stack.isEmpty()){
stack.pop();
}
}
public static void main(String[]args){
binaryNum(20);
printStack();
}
}
import java.util.Stack;
公共类二进制数{
私有静态堆栈=新堆栈();
私有静态整数余数;
公共静态字符串binaryNum(整数){
while(number>0){//while number>0
如果((数字%2!=1)&&(数字%2!=0)){//如果数字不等于零或1
number=(number-1);//将number更新为少一个
整数余数=1;
}
否则{
int rements=number%2;//获取余数
}
stack.push(新整数(余数));
数目/=2;
}
stack.push(新整数(1));
返回“hello”.toString();//只是一个测试
}
公共静态void printStack(){
而(!stack.isEmpty()){
stack.pop();
}
}
公共静态void main(字符串[]args){
二进制数(20);
printStack();
}
}
我似乎没有得到任何输出。我试着在纸上解决这个问题,但不知道它在哪里失败了。我之前确实在那里有一些println语句,而binaryNum
中的if语句似乎总是被调用
谢谢。您需要修改以下代码: 导入java.util.Stack
public class BinaryNumber {
private static Stack<Integer> stack = new Stack<Integer>();
private static int remainder;
public static String binaryNum(int number){
while (number > 0){ //while number > 0
if ((number % 2 != 1) && (number % 2 != 0)){ //if number is not equal to zero or 1
number = (number-1); //update number to one less
**remainder = 1;**
}
else{
**remainder = number % 2; //get the remainder**
}
stack.push(new Integer(remainder));
number /= 2;
}
stack.push(new Integer(1));
return "hello".toString(); //just a test
}
public static void printStack(){
while (!stack.isEmpty()){
**System.out.println(stack.pop());**
}
}
public static void main(String[]args){
binaryNum(20);
printStack();
}
}
公共类二进制数{
私有静态堆栈=新堆栈();
私有静态整数余数;
公共静态字符串binaryNum(整数){
while(number>0){//while number>0
如果((数字%2!=1)&&(数字%2!=0)){//如果数字不等于零或1
number=(number-1);//将number更新为少一个
**余数=1**
}
否则{
**余数=数字%2;//获取余数**
}
stack.push(新整数(余数));
数目/=2;
}
stack.push(新整数(1));
返回“hello”.toString();//只是一个测试
}
公共静态void printStack(){
而(!stack.isEmpty()){
**System.out.println(stack.pop())**
}
}
公共静态void main(字符串[]args){
二进制数(20);
printStack();
}
}
您所做的是初始化两个局部变量“余数”。添加到堆栈对象的是全局变量 您不进行任何打印-这就是没有输出的原因 试试这个(它确实有效):
import java.util.Stack;
public class BinaryNumber {
private static Stack<Integer> stack = new Stack<Integer>();
public static void binaryNum(int number) {
// Important! In case you call binaryNum twice without calling printStack in between.
stack.clear();
while (number > 0) { // while number > 0
int remainder = number % 2; // get the remainder
stack.push(new Integer(remainder));
number /= 2;
}
}
public static void printStack() {
while (!stack.isEmpty()) {
System.out.print(stack.pop());
}
}
public static void main(String[] args) {
binaryNum(20);
printStack();
}
}
import java.util.Stack;
公共类二进制数{
私有静态堆栈=新堆栈();
公共静态void binaryNum(整数){
//重要提示!如果您两次调用binaryNum,而中间没有调用printStack。
stack.clear();
while(number>0){//while number>0
int rements=number%2;//获取余数
stack.push(新整数(余数));
数目/=2;
}
}
公共静态void printStack(){
而(!stack.isEmpty()){
System.out.print(stack.pop());
}
}
公共静态void main(字符串[]args){
二进制数(20);
printStack();
}
}
if((数字%2!=1)&&(数字%2!=0))没有意义。除以2后的余数总是0或1。谢谢,我对模运算符实际给出的结果感到有点困惑。非常感谢,很高兴看到我离得有多近。我总是以一种复杂的方式结束,而不是简单的方式!我想我会慢慢学会的。我在想,在模数%2之后,我可能会得到除1或0以外的其他数字,所以我试图进行补偿,但这是干净的。