/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package hz;
import java.io.*;
/**
*
* @author user
*/
public class Hz {
public static void main(String[] args){
try
{
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println("请输入计算种类:\n1.四则运算:\n2.计算面积:");
int i1 = Integer.valueOf(br.readLine());
if(i1==1)
{
System.out.println("输入计算方法:\n1.加法\n2.减法\n3.乘法\n4.除法");
int i2 = Integer.valueOf(br.readLine());
System.out.println("输入两个数用空格隔开:");
String[] s = br.readLine().split(" ");
double x = Double.valueOf(s[0]);
double y = Double.valueOf(s[1]);
switch(i1)
{
case 1:
System.out.println(x+"+"+y+"="+(x+y));
break;
case 2:
System.out.println(x+"-"+y+"="+(x-y));
break;
case 3:
System.out.println(x+"*"+y+"="+(x*y));
break;
case 4:
System.out.println(x+"/"+y+"="+(x/y));
break;
}
}else
{
System.out.println("选择图形:\n1.正方形\n2.矩形\n3.图形\n4.三角形");
int i2 = Integer.valueOf(br.readLine());
System.out.println("输入两个数用空格隔开:");
String[] s = br.readLine().split(" ");
double x = Double.valueOf(s[0]);
switch(i2)
{
case 1:
System.out.println("正方形面积:"+x*x);
break;
case 2:
double y = Double.valueOf(s[1]);
System.out.println("矩形面积:"+x*y);
break;
case 3:
System.out.println("圆形面积:"+Math.PI*x*x);
break;
case 4:
double z = Double.valueOf(s[1]);
System.out.println("三角形面积:"+0.5*x*z);
break;
}
}
}catch(Exception e)
{
e.printStackTrace();
}}
}
应该使用i2作为switch的条件,i1是第一个选择,i2才是第二个选择
你的第一个switch是在
if(i1==1)的情况下
或者说你第一个switch是不是参数写错了
参数是对的,对比下面那个,里面的内容格式都是正确的,但是下面那个switch可以正常选择运算,只有上面这个是有这个错误的。
你的代码中现出了变量用错的错误。应该用i2的地方错写了i1,我在图中作了标记。
为什么会出这样的错误呢。是由于你的变量命名不规范。i1,i2这样没有实际意义的名字。这样的变量除了自已都记不清每个变量的意义。就算记清了也容易打错变量名。
建议:
1.命名按照变量的意义起名
2.命名使用驼峰命名
如:
你的程序中的i1,表示的是计算种类, 可以用mathClass这样有意义的名字。
你的程序中的i2,表示的是计算方法,可以用mathMethod这样的名字。
这样程序可读性强。也不容易出现笔误。
希望对你有所帮助。