首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请教那位高手可以帮小弟我看一下这个程序什么地方有错?多谢了

2012-01-06 
请问那位高手可以帮我看一下这个程序什么地方有错???急!谢谢了!我是一个java初学者,这个是老师给的作业题,

请问那位高手可以帮我看一下这个程序什么地方有错???急!谢谢了!
我是一个java初学者,这个是老师给的作业题,语法没有错,可是以运行到switch那一行就不能往下了,请高手指导一下,不胜感激!
//将不同进制的数转换成十进制数
package   number;
import   java.io.*;
public   class   Charge   {

public   static   void   main(String[]   args)   {
InputStreamReader   ir;
BufferedReader   in;
ir=new   InputStreamReader(System.in);
in=new   BufferedReader(ir);

                System.out.print( " '请输入进制数: ");
                int   charge=0;
                try
                {
                charge=Integer.parseInt(in.readLine());
                }catch(Exception   e){}
                System.out.println(charge+ "进制 ");
                int   sum=0;
                System.out.println( "请输入要转换的数: ");
                String   s=null;
                try
                {
                s=in.readLine();
                }catch(Exception   e){}
                int   len=s.length();
                int   i=len;
                char   array1[]=new   char[50];
                array1=s.toCharArray();//将字符串转成字符数组
                do         //将十六进制数进行转换
                {

                switch(array1[i])
                {
                case   'A ':
                array1[i]=10;
                break;
                case   'B ':
                array1[i]=11;
                break;
                case   'C ':
                array1[i]=12;
                break;
                case   'D ':
                array1[i]=13;
                break;
                case   'E ':
                array1[i]=14;
                break;
                case   'F ':
                array1[i]=15;


                break;
                default:
                break;
               
               
                }
                i--;
                }while   (array1[i]!=0);
         
                for(int   m=len;m> 0;m--)//将进制数进行相关转换变成十进制数
                {
                for(int   t=0;t <(len-t);t++)
                {
                array1[m]=(char)(array1[m]*charge);
                }
                sum=sum+array1[m];
                }
                System.out.println( "转换成十进制是: "+sum);//输出十进制数
}

}

[解决办法]
这样可以了,问题在于算法不对
至于报错报的是空指针异常,注意数组下标
还有你switch里给字符串数组重新赋值赋的是整数值

import java.io.*;
public class Charge {

public static void main(String[] args) {
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);

System.out.print( " '请输入进制数: ");
int charge=0;
try
{
charge=Integer.parseInt(in.readLine());
}catch(Exception e){}
System.out.println(charge+ "进制 ");
double sum=0;
System.out.println( "请输入要转换的数: ");
String s=null;
try
{
s=in.readLine().trim();
}catch(Exception e){}
int len=s.length();
int i=len-1;
char[] array1=new char[50];
//此处多加了一个整型数组,大小同于你的字符数组,以便switch里赋值
int[] a2=new int[50];
array1=s.toCharArray();//将字符串转成字符数组
do //将十六进制数进行转换
{

switch(array1[i])
{//赋值给整型数组
case 'A ':
a2[i]=10;
break;
case 'B ':
a2[i]=11;
break;
case 'C ':
a2[i]=12;
break;
case 'D ':
a2[i]=13;
break;
case 'E ':
a2[i]=14;
break;
case 'F ':
a2[i]=15;
break;
default:
break;


}
i--;
}while (i> =0);

//将进制数进行相关转换变成十进制数

for(int t=0,m=len-1;t <len;t++,m--){

array1[m]=(char)(array1[m]*charge);
double a=Math.pow(charge, m);
double b=a2[t]*a;

sum=sum+b;
}
System.out.println( "转换成十进制是: "+sum);//输出十进制数
}

}
[解决办法]
/*
* Author: Eric_Zhang
* Created: 20073る30ら と 09:36:22
* Modified: 20073る30ら と 09:36:22
*/

//package number;
import java.io.*;
public class Charge {

public static void main(String[] args) {
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);

System.out.print( "叫块秈&#59345;计: ");
int charge=0;
try


{
charge=16;//Integer.parseInt(in.readLine());
}catch(Exception e){}
System.out.println(charge+ "秈&#59345; ");
int sum=0;
System.out.println( "块璶锣计: ");
String s=null;
try
{
s= "1E ";//in.readLine();
}catch(Exception e){}
System.out.println( "块计: "+s);

int len=s.length();
int i=len-1;
char array1[]=new char[50];
array1=s.toCharArray();
do
{
switch(array1[i]){
case 'A ':
array1[i]=10;
break;
case 'B ':
array1[i]=11;
break;
case 'C ':
array1[i]=12;
break;
case 'D ':
array1[i]=13;
break;
case 'E ':
array1[i]=14;
break;
case 'F ':
array1[i]=15;
break;
default:
break;
}

i--;
} while (i!=0);

for(int m=len-1;m> 0;m--){
for(int t=0;t <(len-t);t++){
array1[m]=(char)(array1[m]*charge);
}
sum=sum+array1[m];
}
System.out.println( "锣てΘ秈&#59345;琌 "+sum);
}

}
[解决办法]
数制转换有方法可用的
看了一下,你这里是处理整数的吧

Integer.parsetInt(String,int)
指定需要转换的字符串及数制,就可以完成转换了

eg: Integer.parseInt( "ff ",16) 将16进制ff转成10进制整数,得到255
Integer.parseInt( "100 ",2) 将2进制100转为10进制整数,得到4

热点排行
Bad Request.