编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。下面是我的源码..问题是怎么检验数字太大``判断是否是非数字字符``和输出顺序.应该是倒着输出.
高手们帮帮忙吖```
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);
}
}
}
}
高手们帮帮忙吖```
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);
}
}
}
}
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();
} }}
x.toHexString() 换十六进制
x.toOctalString() 换八进制因为转换结果是String所以只能你输入的Long够大就不会越界,即使越界,nextLong也会取前一个合法的Long,至于带字符的话,你可以用正则表达式去做,不过就必须先取出流中的内容
你可以采用把结果放在一个数组或list中,计算结束后倒序输出就行