A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨胜利 初级黑马   /  2012-7-18 23:14  /  3259 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨胜利 于 2012-7-20 00:47 编辑

根据需求编写了如下代码:
import java.util.*;
public class BreakTest1
{
/**
*循环录入某学生5门课的成绩并计算平均分
*如果某分数录入为负,停止录入并提示录入错误
*/
public static void main(String[] args)
{
  Scanner input = new Scanner(System.in);
  System.out.println("请您输入学生的姓名:");
  int score = 0;
  boolean wrong = true;
  String name = input.next();
  for (int i=0;i<5 ;i++ )
  {
   System.out.println("请输入5门功课中第"+(i+1) + "门课程的成绩");
   score = input.nextInt();  //从控制台接收数据
   if (score<0)
   {
    wrong = false;  //出差标识
    break;  //退出循环
   }
  }
  System.out.println("您输入的成绩错误!!!");
}
}
问题:
for循环中:
for (int i=0;i<5 ;i++ )
  {
   System.out.println("请输入5门功课中第"+(i+1) + "门课程的成绩");
}
我把它改写成如下代码:
for (int i=1;i<=5 ;i++ )
  {
   System.out.println("请输入5门功课中第"+i+ "门课程的成绩");
}
运行结果一样,但为什么作者要将i的初始化赋值为0?

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

5 个回复

倒序浏览
初始成几都可以,只要保证for循环5次 "()"的值是从1递增到5
回复 使用道具 举报
本帖最后由 黑马-王言龙 于 2012-7-18 23:40 编辑

多写个 =   
程序员能省则省,你懂的,好品质

在你这个程序里体现不出来,要是=号写多了,也是个头疼的事啊。

写程序写久了,如果一直用第二种,突然发现还有第一种写法,我的XX,好爽!

再者这和数组的下标对应了方便操作数组,久而久之成了习惯。

最后你想问数组下标为什么从0开始?

答:数组的下标值是其元素的偏移量,第一个位置偏移量为0,所以从0开始最合适。
回复 使用道具 举报
问题:
for循环中:
for (int i=0;i<5 ;i++ )
  {
   System.out.println("请输入5门功课中第"+(i+1) + "门课程的成绩");
}
我把它改写成如下代码:
for (int i=1;i<=5 ;i++ )
  {
   System.out.println("请输入5门功课中第"+i+ "门课程的成绩");
}
运行结果一样,但为什么作者要将i的初始化赋值为0?


       都可以,没有唯一过程,只有唯一的目的
1
、for循环里面的变量的功能
      ①循环总次数:算出{} 里面代码要执行的次数并一次次的执行{}里面的代码
      ②记录循环到了第几轮:通过i值来确定

2、①for (int i=0;i<5 ;i++ ):
     i 可取的值:0  1 2 3 4  ,共5次
    ②for (int i=1;i<=5 ;i++ )
      i可取的值: 1 2 3 4 5,也是5次
   ③总之,我们要做的事儿就是把{}里面的语句循环执行5次,
              你如果觉得爽,也可以写成 for (int i=-1;i<4 ;i++ ): -1 0 1 2  3 ,反正就是循环5次,
             不管你怎写,你的目的是:循环5次
3、对于System.out.println("请输入5门功课中第"+i+ "门课程的成绩");
        你发现没有,{}语句里面也用了这个i,  用这个i来标记这个语句执行了多少次
         ① int i=0时,i+1
         ②int i=0时 ,  i
        ③int i=-1时,i+2
         
        这里你发现了没有,将i初始化为0和1,比较方便,这是编程经验,所有大家到潜移默化的用i=0或者i=1了,
      很少有人会去这样做 i=-100,   
        i=0或者i=1就变成了比较常用的方式了,

4、我上面讲了这么多话,发现都是多余的,
       我只能说一句:int =0这是一种习惯,作者习惯这样写,大多数人也习惯这样写,大家看多了也都喜欢看这样写的。
    习惯习惯啊!
           

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
问题:
for循环中:
for (int i=0;i<5 ;i++ )
  {
   System.out.println("请输入5门功课中第"+(i+1) + "门课程的成绩");
}
我把它改写成如下代码:
for (int i=1;i<=5 ;i++ )
  {
   System.out.println("请输入5门功课中第"+i+ "门课程的成绩");
}
运行结果一样,但为什么作者要将i的初始化赋值为0?

这个都一样的。。第一个for (int i=0;i<5 ;i++)  是 0 1 2 3 4 走5下   小于5 就是走到4
第二个for是  (int i=1;i<=5;i++) 是 1 2 3 4 5 也是走5下      小于等于5 就是走5

也可以这样写 for( int i =5;i<10;i++)   从5到10也是5下, 不管怎么弄,走5下就行,

但是作者定义0是一种习惯吧, 看着清楚明朗。。。
回复 使用道具 举报
懂了,谢谢大家!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马