黑马程序员技术交流社区
标题:
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