编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。下面是我的源码..问题是怎么检验数字太大``判断是否是非数字字符``和输出顺序.应该是倒着输出.
高手们帮帮忙吖```
import java.util.Scanner;
class No_3
{
public static void main(String args[])
{
Scanner input = new Scanner( System.in );
int a=0;
System.out.println("输入-1退出.");
while(a==0)
{
System.out.print("\n请输入一个数: ");
Long x = input.nextLong();
if (x == -1)
{
a = 2;
break;
}
System.out.print(x%2);
for (; ; )
{
x = x/2;
if (x == 0)
{
break;
}
System.out.print(x%2);
}
}
}
}

解决方案 »

  1.   

    检验数字用
    package temporary;
    import java.io.*; 
    public class Numtest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    boolean b = true; 
    try { 
    while (b) { 
    System.out.print("请输入一个有效的整数:"); 
    String s = (String) br.readLine(); 
    for (int j = 0; j < s.length(); j++) { 
    if (!(s.charAt(j) >= 48 && s.charAt(j) <= 57)) { 
    System.out.println("您输入的不是纯数字!请重新输入."); 
    b = true; 
    break; 

    else{ 
    b = false; 


    if (!b) { 
    int i = Integer.parseInt(s); 
    System.out.println("您输入的是数字:" + i); 


    } catch (Exception e) { 
    e.printStackTrace(); 
    }  }}
      

  2.   

    哥们你看看API里面Long这个类里面已经带了转换方法Long x = intput.nextLong();x.toBinaryString() 换二进制
    x.toHexString() 换十六进制
    x.toOctalString() 换八进制因为转换结果是String所以只能你输入的Long够大就不会越界,即使越界,nextLong也会取前一个合法的Long,至于带字符的话,你可以用正则表达式去做,不过就必须先取出流中的内容
      

  3.   

    应该是倒着输出
    你可以采用把结果放在一个数组或list中,计算结束后倒序输出就行