public class ConstructSkirt implements Fashion {
int age;
double FullLength,BottomRound,WaistRound;
// these are the finall measurements after adding seam allownace
double MFullLength,MBottomRound,MWaistRound;
final int fold=4;
public void setMeasurements()
{
System.out.println("Measurements are set based on the age");
try {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter the age of the person:");
age=br.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
switch(age)
{
.
.
这里当我输入年龄为10时,它返回值49到年龄,这导致它在切换案例中输入错误的代码。
br.read
返回错误值的原因是什么。
答案 0 :(得分:3)
您应该使用br.readLine();
代替。它会返回String
,而不是int
,因此您必须使用Integer.parseInt()
方法转换返回的值:
int age = Integer.parseInt(br.readLine());
答案 1 :(得分:3)
BufferedReader#read()
返回,我引用,“字符读取,为0到65535(0x00-0xffff)范围内的整数,或者如果已到达流末尾则为-1”。
它基本上返回读取为int
的一个字符的代码点。
在旁注中,您应该尝试使用Scanner
,它更符合您的目的。
快速&肮脏的例子:
Scanner s = new Scanner(System.in);
System.out.print("Enter the age of the person:");
int age = s.nextInt();
System.out.printf("You typed %d%n", age);
s.close();
<强> I / O 强>
Enter the age of the person:123
You typed 123
答案 2 :(得分:1)
如果将Scanner用于程序而不是BufferedReader
,可能会更好Scanner scan = new Scanner(System.in);
scan.nextLine();