java小宝宝请教一个弱弱的问题。还请留步指教。

各位高人,本人新手一枚。自己写的十六进制转化为十进制。有一点瑕疵就是,当提示输入一个数的时候,如果我什么都不输入,直接按enter(回车),程序就会陷入死循环,不能动了,只能Ctrl +c退出,搞不懂为什么,作为处女座,很难受。
自己琢磨了好久没琢磨出来。还请大大们指教指教,不胜感激。
import java.util.Scanner;
public class Test{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("Enter a hex :");
String hex =input.nextLine();
boolean b = true;
while(b){
for(int i =0;i hex = hex.toUpperCase();//将其全部转化为大写字母
char hexChar = hex.charAt(i);//依次判定是否为十六进制数
if ((hexChar>='0'&&hexChar<='9')||(hexChar<='F'&&hexChar>='A'))
b =false;
else{
b = true;
System.out.print("这不是十六进制数,请重新输入:");
hex = input.nextLine();
break;}
}
}

System.out.print(hex+"十六进制转为十进制"+方法A(hex));   
}

//方法A用于将十六进制字符转化为十进制。
public static int 方法A(String hex){
int dicimal = 0;
for(int i=0;i char hexChar = hex.charAt(i);
//确定某一个字符
dicimal =dicimal*16+方法B(hexChar);
//依次乘并得到十进制数。
}
return dicimal;
}
//方法B确定字符。
public static int 方法B(char ch){
if(ch>='A'&&ch<='F')
return 10+ch-'A';
else
return ch-'0';
}
}

你的代码给的有问题把

会不会是空指针,回车都没有输入 数字

如果直接按回车的话,得到的是一个空字符串,char hexChar = hex.charAt(i);//依次判定是否为十六进制数 到这里就会报错了。
我看你的代码应该没有给全吧,for(int i =0;i hex = hex.toUpperCase();//将其全部转化为大写字母 for循环这里应该是没有给全,我猜你这里for循环的第二个应该是 i<输入字符串的长度吧 如果你什么都不输入 这个for循环里是不会执行的,就一直执行while循环,也不会跳出

http://blog.csdn.net/mo_fan_qing_wa/article/details/47838165楼主可能需要看一下这个

问题是一点不懂,但希望题主能注意提问时标题要用明确的语句说明情况,同时不要使用无关的标签,我是在C语言标签下看到的问题。