A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王章亚 中级黑马   /  2012-6-22 09:03  /  1109 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王章亚 于 2012-6-25 09:58 编辑

老师的方法
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class FristMethod {
        public void tran()  {
                int sum=0;
                int yushu;
                boolean flag = false;
        try{
                InputStream inputStream = System.in;
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader reader = new BufferedReader(inputStreamReader);
                String str = reader.readLine();
                char[] ch = str.toCharArray();
                str.getChars(0, ch.length, ch, 0);
                for (int i = 0; i < str.length(); i++) {
                        if (Character.isDigit(ch)) {
                                System.out.println("有非字符的字符串");
                                System.exit(0);
                        }
                        else{
                                
                                for(int j=0;j<ch.length;j++){
                                        sum=sum+(char)ch[j];
                                }
                                flag=true;
                        }                                                
                }
               
                str="";
                if (flag) {
                        while (sum != 0) {
                                yushu = sum % 2;
                                sum = sum / 2;
                            str=yushu+str;
                        }
                        System.out.println(str);
                }
               
           }catch(Exception e){
                        e.printStackTrace();
                }
        }
}
-------------------------------------------------------------------------------------------------------------------------我自己的方法功能是一样的不知道区别在哪里,我的方法里面有什么不合理的地方import java.util.Scanner;

public class SecondMethod {

        /*
         * 第二种方法比第一种简单
         */
        public static void main(String[] args) {
                int sum=0;
                int yushu;
                boolean flag=false;
                Scanner input =new Scanner(System.in);
                System.out.println("请输入一个字符串");
                String str=input.next();
                char[] ch=str.toCharArray();
                for(int i=0;i<ch.length;i++){
                        if (Character.isDigit(ch)) {
                                System.out.println("有非字符的字符串");
                                System.exit(0);
                        }
                        else{
                                
                                for(int j=0;j<ch.length;j++){
                                       
                                        sum=sum+(char)ch[j];
                                       
                                }
                                flag=true;
                        }
                }
                        str="";
                        if(flag){
                                while(sum!=0){
                                        yushu=sum%2;
                                        sum=sum/2;
                                    str=yushu+str;
                                }
                                System.out.println(str);
                        }
                        
                }
               
        }



2 个回复

倒序浏览
BufferedReader的效率高,从标准输入流System.in中直接读取用户输入时,用户每输入一个字 符,System.in就读取一个字符。为了能一次读取一行用户的输入,使用了BufferedReader来对用户输入的字符进行缓冲。 readLine()方法会在读取到用户的换行字符时,再一次将整行字符串传入。System.in是一个位流,为了转换为字符流,使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。
回复 使用道具 举报
老师的里面多了BufferedReader,这样效率更高。
BufferedReader--------->原理:BufferedReader会一次性从物理流中读取8k(默认数值,可以设置)字节内容到内存, 如果外界有请求,就会到这里存取,如果内存里没有才到物理流里再去读。即使读,也是再8k。 而直接读物理流,是按字节来读。 对物理流的每次读取,都有IO操作。IO操作是最耗费时间的。 BufferedReader就是减少了大量IO操作,而为你节省了时间。 好比是一辆大型汽车(设装100人),要去车站接人到公司,接一个人也是接,接100个人也是接,而时间一样。显然,接100个人最划算。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马