程序如下,本来希望从控制台输入一个数据,然后将这个数据再在控制台输出。为什么现在输入一个整数,会输出另一个很大的数import java.io.DataInputStream;
import java.io.IOException;
/*
* 此程序的原始目的是从控制台输入一个数据,然后再将这个数据在控制台输出
*/public class Hsdlkgf {
//成员方法,返回读取的整数值
private static int mb_Input(DataInputStream in){
try{
int a=in.readInt();
return a;
}
catch(IOException e){
e.printStackTrace();
return 0;
}
}
public static void main(String[] args){
try{
System.out.println("请输入一个整数");
//输出成员方法mb_Input返回的整数
System.out.println( "输入的整数为:"+mb_Input(new DataInputStream(System.in)));}
catch(Exception e){
e.printStackTrace();
}
}}
import java.io.IOException;
/*
* 此程序的原始目的是从控制台输入一个数据,然后再将这个数据在控制台输出
*/public class Hsdlkgf {
//成员方法,返回读取的整数值
private static int mb_Input(DataInputStream in){
try{
int a=in.readInt();
return a;
}
catch(IOException e){
e.printStackTrace();
return 0;
}
}
public static void main(String[] args){
try{
System.out.println("请输入一个整数");
//输出成员方法mb_Input返回的整数
System.out.println( "输入的整数为:"+mb_Input(new DataInputStream(System.in)));}
catch(Exception e){
e.printStackTrace();
}
}}
干嘛不用BufferedReader 或者 Scanner 很好用的啊public class Test {
// 成员方法,返回读取的整数值
private static int mb_Input(BufferedReader rb) {
int a = 0 ;
try {
a = Integer.parseInt(rb.readLine());
} catch (IOException e) {
e.printStackTrace();
}
return a;
}
public static void main(String[] args) {
try {
System.out.println("请输入一个整数");
// 输出成员方法mb_Input返回的整数
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入的整数为:" + Test.mb_Input(br));
} catch (Exception e) {
e.printStackTrace();
}
}}
因为它返回的是数字对应的unicode的值 比如说 :你输入1234 相当于 49,50,51,52
结果就是(49 << 24) + (50 << 16) + (51 << 8) + (52 << 0)) = 825373492你输入123456 结果也是一样的 因为只读取前四个字节