我用了一个case结构,常量是整型,但是我却不 能正确的读取一个整数,下面程序每次输出的结果都是“you choose error”该怎么办啊?举例如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class SwitchDemo
{
public static void main(String[] args) throws IOException
{
int num;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please input int(1,2,3) to choose!");
num=br.read();
switch(num)
{
case 1:
System.out.println("you choose 1");
break;
case 2:
System.out.println("you choose 2");
break;
case 3:
System.out.println("you choose 3");
break;
default:
System.out.println("you choose errror");
break;
}
}
}我加了一条语句system.out.println(num);
但是输出的结果和我从键盘输入的不一样,所以错误一定在这里,那该怎么修改啊 ?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class SwitchDemo
{
public static void main(String[] args) throws IOException
{
int num;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please input int(1,2,3) to choose!");
num=br.read();
switch(num)
{
case 1:
System.out.println("you choose 1");
break;
case 2:
System.out.println("you choose 2");
break;
case 3:
System.out.println("you choose 3");
break;
default:
System.out.println("you choose errror");
break;
}
}
}我加了一条语句system.out.println(num);
但是输出的结果和我从键盘输入的不一样,所以错误一定在这里,那该怎么修改啊 ?
class SwitchDemo
{
public static void main(String[] args)
{
System.out.println("please input int(1,2,3) to choose!");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();switch(num)
{
case 1:
System.out.println("you choose 1");
break;
case 2:
System.out.println("you choose 2");
break;
case 3:
System.out.println("you choose 3");
break; default:
System.out.println("you choose errror");
break;
}
}
}
不过又晕了,我完全按照你的写法,在我的eclipse中提示Scanner类无法解析!。
奇怪中,难道还有哪里不对吗?。。
{
public static void main(String[] args) throws IOException
{
char num;
System.out.println("please input int(1,2,3) to choose:");
num=(char) System.in.read();//System.out.println(num);
switch(num)
{
case '1':
System.out.println("you choose 1");
break;
case '2':
System.out.println("you choose 2");
break;
case '3':
System.out.println("you choose 3");
break;
default:
System.out.println("you choose errror");
break;
}
}
}
因为你从键盘接受的是字符型的...
导入import
你把我的代码复制过去运行.
class SwitchDemo
{
public static void main(String[] args) throws IOException
{
System.out.println("please input int(1,2,3) to choose!");
//Scanner sc = new Scanner(System.in);
//int num = sc.nextInt();
InputStreamReader isr=new InputStreamReader(System.in);
char num=(char)isr.read();
isr.close();switch(num)
{
case '1':
System.out.println("you choose 1");
break;
case '2':
System.out.println("you choose 2");
break;
case '3':
System.out.println("you choose 3");
break; default:
System.out.println("you choose errror");
break;
}
}
}
import java.io.IOException;
import java.io.InputStreamReader; public class AA
{
public static void main(String[] args) throws IOException
{
int num;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please input int(1,2,3) to choose!");
num=br.read()-48; switch(num)
{
case 1:
System.out.println("you choose 1");
break;
case 2:
System.out.println("you choose 2");
break;
case 3:
System.out.println("you choose 3");
break; default:
System.out.println("you choose errror");
break;
}
}
}
原来的不对是因为把ASC吗转成数字时会有便宜,而49正好是1。
import java.io.IOException;public class Info {
private java.io.BufferedReader br = null;
private String msg = ""; public Info() {
try {
br = new java.io.BufferedReader(new java.io.InputStreamReader(
System.in));
} catch (Exception e) {
System.out.println(e.getMessage());
}
} public String getStringValue() {
try {
msg = br.readLine();
} catch (Exception e) {
System.out.println(e.getMessage());
}
return msg;
} public int getIntValue() {
return Integer.parseInt(getStringValue());
} public float getFloatValue() {
return Float.parseFloat(getStringValue());
} public double getDoubleValue() {
return Double.parseDouble(getStringValue());
}}以后要接收键盘的输入,只需要调用这个类就可以了
调用演示如下://先实例化Info类
Info info = new Info();
//调用getStringValue()方法就可以从键盘接收一个String类型的值
//还有getIntValue() 和getFloatValue() ,getDoubleValue()
String value = info.getStringValue();
import java.io.*;public class INT { public static void main(String[] args) {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please input int(1,2,3) to choose!"); try {
int num = Integer.parseInt(br.readLine());
switch(num)
{
case 1:
System.out.println("you choose 1");
break;
case 2:
System.out.println("you choose 2");
break;
case 3:
System.out.println("you choose 3");
break; default:
System.out.println("you choose errror");
break;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这样就可以了,我调试过了
需要采用Integer,整型包装类的parseInt()方法
num=num-48;
然后就能得到你想要的了,因为是ascII码,不是你认为的1,2,3。
您也可以查一下API里的Integer类的parseInt方法。