Java 中switch语句,case四个,但是不管选择1234的哪个,都是按照第一个输出

/*
 * 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这样的名字。

这样程序可读性强。也不容易出现笔误。

希望对你有所帮助。