| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 836 人关注过本帖, 1 人收藏
标题:谁帮我看看
只看楼主 加入收藏
hacker507
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-10-6
结帖率:100%
收藏(1)
 问题点数:0 回复次数:6 
谁帮我看看
编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个    十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。
 提示:
十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。





import
import
public class Test02 {
    public static int n;
    static int[] a=new int[10];
    public static void main(String args[]) throws IOException{
        int i = 0;
        DataInputStream dis=new DataInputStream(System.in);
        System.out.println("请输入一个字符!");
        String num1=dis.readLine();
        n=(int)num1.charAt(0);
    if(n<64||n>122){
            System.out.println("It not a char");
            }
        else{
       System.out.println(n);
         for(i=0;n!=0;i++){
            a[i]=n%2;
            n=n/2;
            System.out.println(a[i]);
                }    
         System.out.print(i);
             }
        for(int b=i;b<=0;b--)
             System.out.println(a[b]);
        }
    }
搜索更多相关主题的帖子: 键盘 二进制 十进制 字符串 
2008-11-19 12:20
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 
没看懂你要干吗??找错?
2008-11-19 12:50
freish
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1223
专家分:437
注 册:2007-6-1
收藏
得分:0 
[bo][un]hacker507[/un] 在 2008-11-19 12:20 的发言:[/bo]

编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个    十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大 ...

这个提示是小学生的做法,十进制到二进制可以简单的用Integer.toBinaryString(int i)方法和Long.toBinaryString(long i)来做,即使不用这个也应该用移位来实现,除以2实在是太原始了
至于打印十进制的每一位先转换成字符串,然后一个toCharArray() 很简单的搞定

提示中所说的方法适合c语言不适合java……

[[it] 本帖最后由 freish 于 2008-11-19 15:49 编辑 [/it]]
2008-11-19 15:48
freish
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1223
专家分:437
注 册:2007-6-1
收藏
得分:0 
程序代码:
import javax.swing.JOptionPane;
public class NumberTest {
    private long num;
    private String str;
    
    //输入一个数字字符串
    public void inputNum()throws NumberFormatException{
        str = JOptionPane.showInputDialog("输入一个整数");
        if(str==null) System.exit(0); //如果按下取消按钮,退出程序
        str = str.trim();  //消除字符串首尾空格
        num = Long.parseLong(str); //转换成long类型的整数,有可能会抛出NumberFormatException异常
    }
    
    //判断字符串是不是全是数字
    public boolean isDigits(){
        if(str.equals("")) return false;
        for(int i=0;i<str.length();i++){
            if(!Character.isDigit(str.charAt(i))) return false; 
        }
        return true;
    }
    
    //输出数字的每一位
    public void printPerDigit(){
        for(char c:str.toCharArray()){
            System.out.print(c + "  ");
        }
        System.out.println();
    }
    //逆序输出数字每一位
    public void printPerDigitOFReverse(){
        for(char c:new StringBuilder(str).reverse().toString().toCharArray()){
            System.out.print(c + "  ");
        }
        System.out.println();
    }
    
    //输出二进制方法一
    public void toBinary1(){
        System.out.println(Long.toBinaryString(num));
    }
    
    //输出二进制方法二
    public void toBinary2(){
        long a = num;
        StringBuilder bformat = new StringBuilder();
        for(int i=0;i<64;i++){
            bformat.append(a<0?1:0);
            a=a<<1;
        }
        System.out.println(bformat);
    }
    public static void main(String[] args) {
        NumberTest test = new NumberTest();
        try{
            test.inputNum();
        }catch(NumberFormatException e){
            if(test.isDigits())
                JOptionPane.showMessageDialog(null, "您输入的数字过大");
            else
                JOptionPane.showMessageDialog(null, "您输入的不是数字");
            test = null;
        }
        if(test != null){
            System.out.println("输出数字的每一位:");
            test.printPerDigit();
            System.out.println("逆序输出数字每一位:");
            test.printPerDigitOFReverse();
            System.out.println("输出数字而二进制表示用toBinary1方法:");
            test.toBinary1();
            System.out.println("输出数字而二进制表示用toBinary2方法:");
            test.toBinary2();
        }
    }
}
2008-11-19 16:23
baifenghan
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:258
专家分:952
注 册:2006-3-17
收藏
得分:0 
牛,看来有时间还是得熟悉更多的API,设计最有效的方法.
2008-11-20 15:33
hahalq
Rank: 2
来 自:China
等 级:论坛游民
帖 子:21
专家分:20
注 册:2008-10-16
收藏
得分:0 
4楼代码很强...
2008-11-23 16:18
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
收藏
得分:0 
Stack直接搞定
2008-11-23 17:08
快速回复:谁帮我看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017095 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved