当前位置: 技术问答>java相关
这段代码为什么会这样输出?
来源: 互联网 发布时间:2015-05-08
本文导语: 请各位看下面的代码: class horse { int setcolor(int col) { return 625356-col; } int getcolor(int col) { return setcolor(col); } } class mr { public static void main(String args[]) { int cc; int ot; horse hr; hr=new ho...
请各位看下面的代码:
class horse
{
int setcolor(int col)
{
return 625356-col;
}
int getcolor(int col)
{
return setcolor(col);
}
}
class mr
{
public static void main(String args[])
{
int cc;
int ot;
horse hr;
hr=new horse();
try
{
System.out.println("你必需输入一个整数:");
cc=System.in.read();
ot=hr.getcolor(cc);
System.out.println(ot);
System.out.println(System.currentTimeMillis());
}
catch(Exception e)
{}
}
}
为什么当我输入56、57时都输出625303,当我输入2的时候输出625306呢?不明白它是怎么搞地,请大家帮我look look.
class horse
{
int setcolor(int col)
{
return 625356-col;
}
int getcolor(int col)
{
return setcolor(col);
}
}
class mr
{
public static void main(String args[])
{
int cc;
int ot;
horse hr;
hr=new horse();
try
{
System.out.println("你必需输入一个整数:");
cc=System.in.read();
ot=hr.getcolor(cc);
System.out.println(ot);
System.out.println(System.currentTimeMillis());
}
catch(Exception e)
{}
}
}
为什么当我输入56、57时都输出625303,当我输入2的时候输出625306呢?不明白它是怎么搞地,请大家帮我look look.
|
System.in.read();读进来的是流中下一个byte,再转成0到255间的整数。输入56、57读进来的都是代表5的那个byte,转成整数是53,所以结果是625303。
|
cc=System.in.read();//这里只会读取一个字符,所以56,57就是返回'5'
这里要改成
BufferReader br = new BufferReader(new InputStreamReader(System.in));
String line = br.readLine();
cc = Integer.parseInt(line);
这里要改成
BufferReader br = new BufferReader(new InputStreamReader(System.in));
String line = br.readLine();
cc = Integer.parseInt(line);
|
import java.io.*;
class horse
{
int setcolor(int col)
{
return 625356-col;
}
int getcolor(int col)
{
return setcolor(col);
}
}
class mr
{
public static void main(String args[])
{
int ot;
horse hr;
hr=new horse();
try
{
System.out.println("Äã±ØÐèÊäÈëÒ»¸öÕûÊý£º");
//ÐÞ¸Ä
String str;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
str=in.readLine();
int cc = Integer.parseInt(str);
//end
ot=hr.getcolor(cc);
System.out.println(ot);
System.out.println(System.currentTimeMillis());
}
catch(Exception e)
{}
}
}
class horse
{
int setcolor(int col)
{
return 625356-col;
}
int getcolor(int col)
{
return setcolor(col);
}
}
class mr
{
public static void main(String args[])
{
int ot;
horse hr;
hr=new horse();
try
{
System.out.println("Äã±ØÐèÊäÈëÒ»¸öÕûÊý£º");
//ÐÞ¸Ä
String str;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
str=in.readLine();
int cc = Integer.parseInt(str);
//end
ot=hr.getcolor(cc);
System.out.println(ot);
System.out.println(System.currentTimeMillis());
}
catch(Exception e)
{}
}
}
|
cc=System.in.read();
读到的是第一个字符的ascii数值
56/57地一个都是'5' ascii = 53
所以得到625303
2ascii = 50
所以得到625306
读到的是第一个字符的ascii数值
56/57地一个都是'5' ascii = 53
所以得到625303
2ascii = 50
所以得到625306