以下是我做的一个课后题,可是为什么读入的数不是输入的数呢?
i=System.in.read();
为什么读的不是输入的数???
class Chapter32
{
static int ternary(int x)
{
return x<10 ? x*100:x+10;
}
static int alternative(int x)
{
if (x<10)
return x*100;
else
return x+10;
}
public static void main(String[] args)
{
int i=10;
try
{i=System.in.read();
}catch (Exception e){};
System.out.println("x="+i);
System.out.println("ternary:"+ternary(i));
System.out.println("alternative:"+alternative(i));
}
}
i=System.in.read();
为什么读的不是输入的数???
class Chapter32
{
static int ternary(int x)
{
return x<10 ? x*100:x+10;
}
static int alternative(int x)
{
if (x<10)
return x*100;
else
return x+10;
}
public static void main(String[] args)
{
int i=10;
try
{i=System.in.read();
}catch (Exception e){};
System.out.println("x="+i);
System.out.println("ternary:"+ternary(i));
System.out.println("alternative:"+alternative(i));
}
}
用readline吧
建议你先把它们读入一个buf中,而后再进行转换!譬如:
public static void main(String args[]) throws IOException
{
int n;
byte[] buf=new byte[20];
System.out.println("Please the value of n:");
System.in.read(buf);
int n=Integer.parseInt(new String(buf).trim());
System.out.println("n="+n);
}
class Chapter32
{
static int ternary(int x)
{
return x < 10 ? x*100 : x + 10;
}
static int alternative(int x)
{
if (x < 10)
return x * 100;
else
return x + 10;
}
public static void main(String[] args)
{
int i=10;
/**try
{
i=System.in.read();
}
catch (IOException e){}
*/
System.out.println("x="+i);
System.out.println("ternary:"+ternary(i));
System.out.println("alternative:"+alternative(i));
}
}
楼主把那段异常代码注销掉
得到的应该是你想要的结果吧
比方说,如果你在键盘输入1,那么如果用System.out.print输出的话,将得到49,因为1在Unicode中的编码是49,所以如果你想得到你要的准确结果的时候,一定要造型。
本例中你需要得到准确的数字,因为是数字,又和int兼容所以如果你的这句改成这样:
i=(int)System.in.read();就完全可以了,^_^。
祝你成功!
应该是:i=(char)System.in.read()//这是造型得到输入的字符
(int)i;
然后就可以了
不好意思