import java.util.Scanner;
public class Transfer
{
int x;
int select;
int []yu=new int[20];
int i;
void get()
{
System.out.printf("\t十进制转换器\n");
System.out.printf("1.转换成二进制数\n");
System.out.printf("2.转换成八进制数\n");
System.out.printf("3.转换成十六进制数\n");
System.out.printf("0.退出\n");
System.out.println("请输入一个十进制数据:");
Scanner input=new Scanner(System.in);
x=input.nextInt();
System.out.println("请选择转换方式:");
select=input.nextInt();
}
void choose()

                  while(select!=0) //就是加了个WHILE语句,调试过程就提示说数组边界溢出,为什么呢,晕哦
                {
if (select>3||select<0)
{
System.out.println("转换方式选择错误,请重选");
get();
}else 
{
if (select==0) System.exit(0);
else transfer(select);
}
               }
}

void transfer(int s)
{
int base=2;
switch(s)
{
case 1:base=2;break;
case 2:base=8;break;
case 3:base=16;break;
}
while(x>=base)
{
yu[i++]=x % base;
x=x/base;
}
yu[i]=x;
print();
}
void print()
{
System.out.printf("\n转换之后的进制数为:");
switch(select)
{
case 1:
while(i>=0)
System.out.print(yu[i--]);
break;
case 2:
while(i>=0)
System.out.print(yu[i--]);
break;
case 3:
while(i>=0)
{
if (yu[i]>9) System.out.print((char)(yu[i--]+55));
else System.out.print(yu[i--]);
}break;
}
}
public static void main(String []args)
{
Transfer t=new Transfer();
t.get();
t.choose();
t.print();

}
}

解决方案 »

  1.   

    找个有ide的调试一下就知道了
      

  2.   

    是JAVA吗??System.out.printf  ~!!??
      

  3.   

    to    :tomkai(我不是苹果) ( 一级(初级)) 信誉:100  2007-05-15 12:48:47  得分:0
    是JAVA吗??System.out.printf ~!!??
    是java的,从jdk1.5开始java.io.PrintStream类有printf方法,用于格式化输出的
      

  4.   

    是java的,从jdk1.5开始java.io.PrintStream类有printf方法,用于格式化输出的==================================
    谢谢..受教了...but...我的是1.60内核的... 还是无法找到printf方法..  - -
      

  5.   

    yu[i] = x;应该是在这里运行错误
      

  6.   

    import java.util.Scanner;
    public class Transfer{
    int x;
    int select;
    int []yu=new int[20];
    int i;
    void get(){
    System.out.println("");
    System.out.printf("\t十进制转换器\n");
    System.out.printf("1.转换成二进制数\n");
    System.out.printf("2.转换成八进制数\n");
    System.out.printf("3.转换成十六进制数\n");
    System.out.printf("0.退出\n");
    System.out.println("请输入一个十进制数据:");
    Scanner input=new Scanner(System.in);
    x=input.nextInt();
    System.out.println("请选择转换方式:" );
    select=input.nextInt();

    }
    void choose(){
    while(select!=0) {
    if (select>3||select<0){
    System.out.println("转换方式选择错误,请重选");
    get();
    }else{
    if (select==0) System.exit(0);
    else {
    transfer(select);
    print();
    get();
    }
    }
    }
    } void transfer(int s){
    int base=2;
    switch(s){
    case 1:base=2;break;
    case 2:base=8;break;
    case 3:base=16;break;
    }
    while(x>=base){
    yu[i++]=x % base;
    x=x/base;
    }
    yu[i]=x;
    }
    void print(){
    System.out.printf("\n转换之后的进制数为:");
    switch(select){
    case 1:
    while(i>=0)
    System.out.print(yu[i--]);
    break;
    case 2:
    System.out.println(i);
    while(i>=0){
    System.out.print(yu[i--]);
    }
    break;
    case 3:
    while(i>=0) {
    if (yu[i]>9) System.out.print((char)(yu[i--]+55));
    else System.out.print(yu[i--]);
    }break;
    }
    }
    public static void main(String []args){
    Transfer t=new Transfer();
    t.get();
    t.choose();
    //t.print();
    }
    }
      

  7.   

    import java.util.Scanner;
    public class Transfer{
    int x;
    int select;
    int []yu=new int[20];
    int i;
    void get(){
    System.out.println("");
    System.out.printf("\t十进制转换器\n");
    System.out.printf("1.转换成二进制数\n");
    System.out.printf("2.转换成八进制数\n");
    System.out.printf("3.转换成十六进制数\n");
    System.out.printf("0.退出\n");
    System.out.println("请输入一个十进制数据:");
    Scanner input=new Scanner(System.in);
    x=input.nextInt();
    System.out.println("请选择转换方式:" );
    select=input.nextInt();
    System.out.println(x+"--"+select);
    }
    void choose(){
    while(select!=0) {
    if (select>3||select<0){
    System.out.println("转换方式选择错误,请重选");
    }else{
    if (select==0) System.exit(0);
    else {
    transfer(select);
    print();
    }
    }
    get();
    }
    } void transfer(int s){
    int base=2;
    i=0;
    switch(s){
    case 1:base=2;break;
    case 2:base=8;break;
    case 3:base=16;break;
    }
    while(x>=base){
    yu[i++]=x % base;
    x=x/base;
    }
    yu[i]=x;
    }
    void print(){
    System.out.printf("\n转换之后的进制数为:");
    switch(select){
    case 1:
    while(i>=0)
    System.out.print(yu[i--]);
    break;
    case 2:
    System.out.println(i);
    while(i>=0){
    System.out.print(yu[i--]);
    }
    break;
    case 3:
    while(i>=0) {
    if (yu[i]>9) System.out.print((char)(yu[i--]+55));
    else System.out.print(yu[i--]);
    }break;
    }
    }
    public static void main(String []args){
    Transfer t=new Transfer();
    t.get();
    t.choose();
    //t.print();
    }
    }