电脑网络

Java的while嵌套一个switch要注意什么吗?为啥我的程序运行是错的?求教

346 浏览

Java的while嵌套一个switch要注意什么吗?为啥我的程序运行是错的?求教

1 个回答

敏儿用户头像
敏儿 回答于 2024-07-20
已采纳

提问:Java的while嵌套一个switch要注意什么吗?为啥我的程序运行是错的?求教

import java.util.*;public class xh_while{ public static void main(String[] args){ Scanner wst=new Scanner(System.in); System.out.println("请输入学员的姓名:"); String student=wst.next(); int subject=1; int sum=0; while(subject<=3){ switch(subject){ case 1: System.out.println("请输入"+student+"的语文成绩"); int mk=wst.nextInt(); int yw=mk; break; case 2: System.out.println("请输入"+student+"的英语成绩"); int mm=wst.nextInt(); int yy=mm; break; case 3: System.out.println("请输入"+student+"的数学成绩"); int mmm=wst.nextInt(); int sx=mmm; break; } subject++; } sum=yw+yy+sx; System.out.println(student+"学生的总成绩是"+sum); }}

网友回答:

你要注意变量作用域

JAVA程序块内定义的变量 ,只能在程序块内使用

如你的

  int mk=wst.nextInt();

            int yw=mk;

只能用于

  case 1:  到 break间,出了这个范围就不能用了

你的

    sum=yw+yy+sx;

中的yw,yy,sx都是没有定义的变量

所以尽量在一个函数内且是程序开头定义变量,不要随时定义变量(特别是初学,对作用域概念不很清)

改好的程序:

import java.util.*;

public class xh_while{

    public static void main(String[] args){

    Scanner wst=new Scanner(System.in);

    System.out.println("请输入学员的姓名:");

    String student=wst.next();

    int subject=1;

    int sum=0;

    int yw=0,yy=0,sx=0;

 

   while(subject<=3){

        switch(subject){

            case 1:

            System.out.println("请输入"+student+"的语文成绩");

             yw=wst.nextInt();

            break;

            case 2:

            System.out.println("请输入"+student+"的英语成绩");

            yy=wst.nextInt();

 

            break;

            case 3:

            System.out.println("请输入"+student+"的数学成绩");

            sx=wst.nextInt();

 

            break;

            }

 

        subject++;

     }

    sum=yw+yy+sx;

   System.out.println(student+"学生的总成绩是"+sum);

  }

}


我来回答

相关问题