请问那位高手可以帮我看一下这个程序什么地方有错???急!谢谢了!
我是一个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: 20073る30ら と 09:36:22
* Modified: 20073る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( "叫块秈计: ");
int charge=0;
try
{
charge=16;//Integer.parseInt(in.readLine());
}catch(Exception e){}
System.out.println(charge+ "秈 ");
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( "锣てΘ秈琌 "+sum);
}
}
[解决办法]
数制转换有方法可用的
看了一下,你这里是处理整数的吧
Integer.parsetInt(String,int)
指定需要转换的字符串及数制,就可以完成转换了
eg: Integer.parseInt( "ff ",16) 将16进制ff转成10进制整数,得到255
Integer.parseInt( "100 ",2) 将2进制100转为10进制整数,得到4