黑马程序员技术交流社区

标题: for循环语句中初始化的问题! [打印本页]

作者: 杨胜利    时间: 2012-7-18 23:14
标题: for循环语句中初始化的问题!
本帖最后由 杨胜利 于 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?

作者: 康大玮    时间: 2012-7-18 23:22
初始成几都可以,只要保证for循环5次 "()"的值是从1递增到5
作者: 黑马-王言龙    时间: 2012-7-18 23:22
本帖最后由 黑马-王言龙 于 2012-7-18 23:40 编辑

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

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

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

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

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

答:数组的下标值是其元素的偏移量,第一个位置偏移量为0,所以从0开始最合适。

作者: 张世威    时间: 2012-7-18 23:40
问题:
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这是一种习惯,作者习惯这样写,大多数人也习惯这样写,大家看多了也都喜欢看这样写的。
    习惯习惯啊!
           
作者: 孙浩迪    时间: 2012-7-19 00:25
问题:
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是一种习惯吧, 看着清楚明朗。。。
作者: 杨胜利    时间: 2012-7-19 07:53
懂了,谢谢大家!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2