为什么输出我的平均分没有小数?为什么我的Eclipse会提示这个?

为什么输出我的平均分没有小数?为什么我的Eclipse会提示这个?

1、为什么输出我的平均分没有小数?

这段代码还有其他地方需要改进吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int[][] intArray=new int[3][2];
int Ywsum=0;
double Ywpj=0.0;
int Sxsum=0;
double Sxpj=0.0;
       //从键盘输入学生成绩
Scanner s1=new Scanner(System.in);
for(int i=0;i<intArray.length;i++)
        System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
        intArray[i][0]=s1.nextInt();
        System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
        intArray[i][1]=s1.nextInt();
}
        //算总成绩和平均分
for(int i=0;i<intArray.length;i++)
{
 
        Ywsum+=intArray[i][0];
        Sxsum+=intArray[i][1];
 
}
        //总成绩和平均分
Ywpj=Ywsum/intArray.length;
Sxpj=Sxsum/intArray.length;
System.out.println("语文的总成绩为:"+Ywsum);
System.out.println("语文的平均分为:"+Ywpj);
System.out.println("数学的总成绩为:"+Sxsum);
System.out.println("数学的平均分为:"+Sxpj);

2、为什么我的Eclipse会提示这个?该怎么解决?

http://img1.sycdn.imooc.com//climg/5d6ca0020001a28711040302.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,这里当两个整数相除,Java中规定默认为int型,将小数舍去,所以在进行输出时需要进行强转为double类型。修改后的代码如下:

1
2
Ywpj =(double) Ywsum / intArray.length;
Sxpj = (double) Sxsum / intArray.length;

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 小老哥丶 提问者 #1
    这样还是没作用呢
    2019-09-02 18:38:37
  • 小老哥丶 提问者 #2
    结果还是.0没有小数
    2019-09-02 18:40:10
好帮手慕酷酷 2019-09-02 19:00:09

同学你好,可以使用以下方式限制输出小数位为两位,这种方式记住就可以了。

1
System.out.printf("语文的平均分为:" "%.2f\n",Ywpj);

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕酷酷 2019-09-02 18:47:53

同学你好,老师进行修改后是正确的呢~具体如图:

http://img1.sycdn.imooc.com//climg/5d6cf34300010b3306460685.jpg

具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.Scanner;
 
public class Test {
    public static void main(String[] args) {
        int[][] intArray = new int[3][2];
        int Ywsum = 0;
        double Ywpj = 0.0;
        int Sxsum = 0;
        double Sxpj = 0.0;
        // 从键盘输入学生成绩
        Scanner s1 = new Scanner(System.in);
        for (int i = 0; i < intArray.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个学生的语文成绩:");
            intArray[i][0] = s1.nextInt();
            System.out.println("请输入第" + (i + 1) + "个学生的数学成绩:");
            intArray[i][1] = s1.nextInt();
        }
        // 算总成绩和平均分
        for (int i = 0; i < intArray.length; i++) {
 
            Ywsum += intArray[i][0];
            Sxsum += intArray[i][1];
 
        }
        // 总成绩和平均分
        Ywpj =(double) Ywsum / intArray.length;
        Sxpj = (double)Sxsum / intArray.length;
        System.out.println("语文的总成绩为:" + Ywsum);
        System.out.println("语文的平均分为:" + Ywpj);
        System.out.println("数学的总成绩为:" + Sxsum);
        System.out.println("数学的平均分为:" + Sxpj);
    }
 
}

建议同学尝试输入不同的数据,进行测试哦~

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 小老哥丶 #1
    确实有用,是我粗心了,我除的数正好是整数。还有一个问题,怎么限制输出的小数位数呢?比如我只想输出2位小数应该怎么做呢?
    2019-09-02 18:53:34
  • 提问者 小老哥丶 #2
    确实有用,是我粗心了,我除的数正好是整数。还有一个问题,怎么限制输出的小数位数呢?比如我只想输出2位小数应该怎么做呢?
    2019-09-02 18:53:36
好帮手慕酷酷 2019-09-02 14:50:13

同学你好,

1、代码完成的不错

2、Eclipse提示的信息,含义是没有关闭sc对象,同学可以尝试在打印输出后,添加s1.close();为s1键盘输入对象进行关闭。具体代码如下:

http://img1.sycdn.imooc.com//climg/5d6cbb50000105d204790074.jpg

在Java的简单程序编写过程中,简短的小程序,Scanner对象不关闭也是可以的,因为程序马上就退出了,不影响程序运行。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 小老哥丶 #1
    为什么平均分的结果不是小数呢,我定义了double类型呀
    2019-09-02 15:44:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码