黑马程序员技术交流社区
标题:
哪位大神可以加下注释,让我理解一下啊
[打印本页]
作者:
郭.威
时间:
2015-6-7 18:01
标题:
哪位大神可以加下注释,让我理解一下啊
public static void main(String[] args) throws Exception
{
int shang=0,yu;
boolean flag=false;
System.out.println("请输入一个数字(最大值为<"+Integer.MAX_VALUE+"):");
InputStream is = System.in;
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String str=br.readLine();
char[] ch=new char[str.length()];
str.getChars(0, str.length(), ch, 0);
for(int a=0;a<str.length();a++)
{
if(!Character.isDigit(ch[a]))
{
System.out.println("有非数字字符");
System.exit(0);
}
}
try
{
shang=Integer.parseInt(str);
flag=true;
}
catch(Exception e)
{
System.out.println("数字过大");
}
str="";
if (flag)
{
while (shang != 0)
{
yu = shang % 2;
shang = shang / 2;
str = yu + str;
}
}
System.out.println(str);
}
作者:
武汉小菜鸟
时间:
2015-6-7 21:34
代码比较乱
作者:
想要那片海
时间:
2015-6-7 22:21
public static void main(String[] args) throws Exception
{
int shang=0,yu;
boolean flag=false;
//输出一条提示语句,
System.out.println("请输入一个数字(最大值为<"+Integer.MAX_VALUE+"):");
//我把你的三条流语句整合为一句,就是将将读取键盘定义为字符缓冲流
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//读取键盘录入的内容
String str=br.readLine();
//将键盘录入的内容转换为字符数组
char[] ch=new char[str.length()];
str.getChars(0, str.length(), ch, 0);
//以上两句可以写成:char[] ch=str.toCharArray();
for(int a=0;a<str.length();a++)
{
if(!Character.isDigit(ch[a]))//判断输入的内容是不是有效数字
{
System.out.println("有非数字字符");
System.exit(0);
}
}
try
{//将输入的内容转换为数字
shang=Integer.parseInt(str);
flag=true;
}
catch(Exception e)
{
System.out.println("数字过大");
}
str="";
if (flag)
{
while (shang != 0)//
{
//除2取余,是在计算这个数的二进制表现形式
yu = shang % 2;
shang = shang / 2;
//因为取余是从后向前取,所以要在最后实现正常的读取顺序,
//这个地方可以用StringBuilder 的append 将余数添加到缓冲区结尾
//最后将StringBuilder 翻转就可以
str = yu + str;
}
}
System.out.println(str);
}
复制代码
作者:
郭.威
时间:
2015-6-7 23:56
想要那片海 发表于 2015-6-7 22:21
谢了 看明白了
作者:
hnyzhlq
时间:
2015-6-8 11:10
好多大神
作者:
天涯111
时间:
2015-6-8 11:14
大神 注释的好详细啊。这看起来清楚多了。
作者:
Smile小思
时间:
2015-6-8 16:19
围观大神
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2