得不到结果,但我自己检查了好几遍却不知道哪里出现问题,求助!
package hello;
import java.util.Scanner;
public class Main{
static int[] Ten_To_N(int x,int n){
int []number=new int[10];
int rest=x;
stack Stack=new stack();
while(rest!=0){
Stack.pop(number, rest, Stack.Top++);
rest=rest/n;
}
return number;
}
static void show(){
System.out.println("请输入您的十进制数字:");
Scanner in=new Scanner(System.in);
int x=in.nextInt();
System.out.println("输入您想要转换的进制数:");
int n=in.nextInt();
int []number=Ten_To_N(x,n);
String number2="0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";
stack Stack=new stack();
System.out.println("转换后的数字为:");
for(int i=Stack.Top-1;i>0;i--){
System.out.print(number2.charAt(number[i]));
}
}
public static void main(String agrs[]){
show();
}
}
class stack{
static int Top=1;
void pop(int []number,int x,int top){
number=extend(top,number);
number[top]=x;
}
boolean IfFull(int top,int []number){
if(number[top]==-1)
{
return false;
}
else return true;
}
int[] extend(int top,int[]number)
{
if(!IfFull(top,number))
{
return number;
}
else
{
int [] number2=new int[number.length*2];
for(int i=0;i<number.length;i++)
{
number2[i]=number[i];
}
return number2;
}
}
int pow(int []number,int top){
number[top--]=-1;
return top;
}
}
有两种程序员
一种把代码写得很简单,而很难挑出错误。
一种把代码写得很复杂,而很难找出错误。
你说你就搞个进制转换,还大费周章搞了个堆栈,然后又说看不出哪里错,你不是自找么。
兄弟,装过头了不是。你这是论一个程序员的自我挑战极限吧
emmm前两个回答都在说栈之类的东西,我说一下 ,这个东西是一个作业,然后要求就是这样,自己动手撸一个出来。
java 的进制转换可以不必写得这么复杂,你想转成几进制java都有封装好的方法
for循环不是这么写的,你如果想使用numers[i]这个数组的自减方法,你该这么写,for(int i=numbers.length-1;i>=0;i--);这样你就可以操作数组的下标进行for循环输出了