日期:2014-05-19  浏览次数:20731 次

初学者提问Scanner的用法,希望有人能解释一下里面的这段代码的意思。
各位老师各位师兄能不能帮我解释一下下面这段代码的意思,是每一段代码的意思。我是初学者所以看不懂,希望老师们能帮一下我
import java.util.*;
//创建一个类名称为Example2_4
public class Example2_4
{
public static void main(String args[])
{
Scanner reader=new Scanner(System.in);
double a=0;
int b=0;
while(reader.hasNextDouble())
{
double c=reader.nextDouble();
b=b+1;
a=a+c;
}
System.out.printf("%d 个数的和为%f\n",b,a);
System.out.printf("%d 个数的平均值是%f\n",b,a/b);
}
}

------解决方案--------------------
Java code
//导入了java自带的util【工具包】
import java.util.*;
//创建一个类名称为Example2_4
public class Example2_4
{
//每个程序都有个入口、这段话就是整个程序的入口、
//public 公开  static 静态   void 默认返回类型      main主程序
//String 字符串类型    args[]  一维数组
//连起来就是程序刚启动的时候被优先生成出来了、
//还是死记这段程序入口代码吧
public static void main(String args[])
{

//从系统输入获取输入的字符串
Scanner reader=new Scanner(System.in);
//声明一个双精度类型的 a 赋初始值为0
double a=0;
//声明一个整形变量b 赋初始值为0
int b=0;
//while是个循环 ()里面是条件
//当reader(指的是从系统输入流中获取的字符串中有double类型的数据)
while(reader.hasNextDouble())
{
//新创建一个局部双精度的变量c 赋初始值从nextDouble()中获取【是下一个双精度么?】
double c=reader.nextDouble();
//b+1的值赋给了b   【整形 + 整形  最后变整形、没有涉及到强制转换】
b=b+1;
【双精度+双精度 最后变双精度   没有涉及强制转换】
a=a+c;
}
//System.out.printf();【是系统输出流】
// %d  是按整形类型输出【其实是输出的是b值】  %f 是按浮点数类型输出【输出的是a的值】  
System.out.printf("%d 个数的和为%f\n",b,a);
// %d  是按整形类型输出【其实是输出的是b值】  %f 是按浮点数类型输出【输出的是a除以b的值,双精度】  
System.out.printf("%d 个数的平均值是%f\n",b,a/b);
}
}