先贴出来正确的代码:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextLine()){
StringBuilder result = new StringBuilder();
String str = in.nextLine();
char[] strArray = str.toCharArray();
int length = strArray.length;
Map<Character,Integer> mapData = new HashMap<Character,Integer>();
int num = 0;
for(Character i='0';i<='9';i++){
mapData.put(i, num++);
}
for(Character i='A';i<='F';i++){
mapData.put(i, num++);
}
int res = 0;
for(int i=length-1,count = 0;i>=0;i--,count++){
int stepThree = ((int)Math.pow(16, count));
int stepTwo=0;
char ch = strArray[i];
if('0'<=ch&&ch<='9'||'A'<=ch&&ch<='F'){
stepTwo = mapData.get(ch);
}
int stepOne =stepThree*stepTwo;
res = res + stepOne;
}
System.out.println(String.valueOf(res));
}
in.close();
}
}
再看错误的代码:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextLine()){
StringBuilder result = new StringBuilder();
String str = in.nextLine();
char[] strArray = str.toCharArray();
int length = strArray.length;
Map<Character,Integer> mapData = new HashMap<Character,Integer>();
int num = 0;
for(Character i='0';i<='9';i++){
mapData.put(i, num++);
}
for(Character i='A';i<='F';i++){
mapData.put(i, num++);
}
int res = 0;
for(int i=length-1,count = 0;i>=0;i--,count++){
int stepOne =mapData.get(strArray[i])*((int)Math.pow(16, count));
res = res + stepOne;
}
System.out.println(String.valueOf(res));
}
}
}
int stepOne =mapData.get(strArray[i])*((int)Math.pow(16, count));
这行代码get(strArray[i]),可能获取到乱七八糟的东西,因此还是代码没有处理好 异常的情况
关注我,获取400个的赚钱金点子,轻松开启程序员的副业生涯