东流二
2021-03-19 10:39
采纳率: 100%
浏览 110
已采纳

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();
        
    }}

     
    
    
    
    
    
    
    
    
}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 规则边缘 2021-03-19 10:52
    已采纳

    应该使用i2作为switch的条件,i1是第一个选择,i2才是第二个选择

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 蛋糕店筹备中 2021-03-19 10:45

    你的第一个switch是在
    if(i1==1)的情况下

    或者说你第一个switch是不是参数写错了

    评论
    解决 无用
    打赏 举报
  • 东流二 2021-03-19 10:50

    参数是对的,对比下面那个,里面的内容格式都是正确的,但是下面那个switch可以正常选择运算,只有上面这个是有这个错误的。

    评论
    解决 无用
    打赏 举报
  • 小亮点科技 2021-03-19 11:01

    你的代码中现出了变量用错的错误。应该用i2的地方错写了i1,我在图中作了标记。

    为什么会出这样的错误呢。是由于你的变量命名不规范。i1,i2这样没有实际意义的名字。这样的变量除了自已都记不清每个变量的意义。就算记清了也容易打错变量名。

    建议:

    1.命名按照变量的意义起名

    2.命名使用驼峰命名

    如:

    你的程序中的i1,表示的是计算种类, 可以用mathClass这样有意义的名字。

    你的程序中的i2,表示的是计算方法,可以用mathMethod这样的名字。

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

    希望对你有所帮助。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题