十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
主要你看当i等于3的时候,这个时候greetings[3]已经报了数组越界的错误了,所以不会执行i++,执行到报错了那里了,打印出了数组下标越界异常,所以此时i还是为3,这样就继续循环了,3依然小于4,所以继续取greetings[3],依然不会执行i++
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网络空间、营销软件、网站建设、宜州网站维护、网站推广。
所以根本原因是你设置的上限4不对,改为3即可
首先,你的while里面,如果什么都不写的话,while是恒成立的,所以永远不会执行i++
但如果你里面有if语句,在某些情况下,它可能会执行到break上面来,跳出while,所以i++写在这里,编译器会认为它没有问题。
if里面是false,while里面是true,你可以想一下,if(false)永远不可能成立,所以这个分支是永远不可能执行到的,不能执行if那么i++也是执行不到。在这种情况下,编译器不会报错。所以会有你说的Dead code.
125/100 因为分子125和分母100都是int.
所以他们相除的结果是也是int, 被四舍五入变成了1.
所以你的p值永远都不会变.
所以while(p200000)永远都不会满足, 导致死循环.
1、while关键字的中文意思是“当……的时候”,也就是当条件成立时循环执行对应的代码。while语句是循环语句中基本的结构,语法格式比较简单。
while语句语法格式:
while(循环条件)
循环体;
为了结构清楚,并且使循环体部分可以书写多行代码,一般把循环体处理成代码块,则语法格式变为:
while(循环条件){
循环体;
}
语法说明:和if语句类似,如果不是用代码块的结构,则只有while后面的第一个语句是循环体语句。在该语法中,要求循环条件的类型为boolean类型,指循环成立的条件,循环体部分则是需要重复执行的代码。
执行流程:在执行while语句时,首先判断循环条件,如果循环条件为false,则直接执行while语句后续的代码,如果循环条件为true,则执行循环体代码,然后再判断循环条件,一直到循环条件不成立为止。
下面结合具体的示例来演示一下while语句的基本使用。首先我们来实现一个无限循环,也称死循环,具体代码如下:
while(true){
System.out.println(‘a’);
}
用的IDE是Eclipse么?建议用加断点自己跟踪调试,看看循环里的每一步都干了些什么,如下图:
你的第一段代码:
public static void main(String args[]) {
int layer = 4;
for (int i = 1; i = layer; i++) {
for (int k = 1; k = layer - i; k++) {
System.out.print(" ");
}
for (int j = 1; j = (i - 1) * 2 + 1; j++) {
System.out.print("*");
}
System.out.println();
}
int layer1 = 3;
for (int i = 1; i = layer1; i++) {
for (int k = 1; k = (layer1 - i) + 1; k++) {
System.out.print(" ");
}
//这里j++,j会越来越大,死循环了
for (int j = 5; j = (i + 1) * 2 + 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
第二段代码:
public class Hello{
public static void main(String args[]) {
int i1, j1;
for (i1 = 1; i1 = 7; i1++) {
for (j1 = 1; j1 = 7; j1++) {
//循环体空,不知道你想干什么
}
if (j1 + i1 == 5 || j1 - i1 == 3 || i1 - j1 == 3 || i1 + j1 == 11) {
System.out.print("*");
}
else {
System.out.print("");
}
}
System.out.println();
}
}
第三段代码:
import java.util.Scanner;
public class Hello{
private int maxNum;
public Hello(int maxNum) {
this.maxNum = maxNum;
}
public void print() {
//第一层for循环,打印maxNum行
for (int i = 1; i = maxNum; i++) {
//第二层for循环,每次执行i次
for (int j = 1; j = i; j++) {
System.out.print(j);
System.out.print("*");
System.out.print(i);
System.out.print("=");
System.out.print(i * j);
System.out.print("\t");
}
System.out.println();
}
}
public static void main(String[] args) {
System.out.print("录入一个整数:");
Scanner input = new Scanner(System.in);
// 没有考虑判断输入的是否是整数。
int maxNum = input.nextInt();
new Hello(maxNum).print();
}
}
在网上搜搜Eclipse怎么断点调试,你就可以看到每次循环都干了什么,一一给你解释太麻烦了。