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

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

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

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

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类型。修改后的代码如下:

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

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

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

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

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

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

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

具体代码如下:

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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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