内存溢出,println换行,print不换行。
循环结构的特点 :循环结构,循环条件,循环操作。
循环结构:
1、while循环:先进行条件判断,再执行逻辑代码
初始化:变量初始化
条件判断:只允许返回true或false
循环体:如果条件符合要执行的逻辑代码
迭代变量:促使循环跳出的条件
2、do while循环:先执行逻辑代码,再进行条件判断
while循环:在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后 来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
循环结构都由如下四个结构组成: 初始化、条件判断、循环体、迭代。
do-while循环 ▪ 先do-while循环先判断,后执行。
▪ while: – 先判断,后执行。
While和dowhile的区别: Dowhile总是保证循环体会被至少执 行一次!这是他们的主要差别
for循环语句是支持迭代的一种通用结构,是最有效、最灵 活的循环结构
▪ 语法形式 ▪ for (初始表达式;布尔表达式;步进) { 循环体;
}
▪ 注意事项 – for循环在执行条件测试后,先执行程序部分,再执行步进。 – 在for语句的初始化部分声明的变量,其作用域为整个for循环体 – “初始化”和“循环条件表达式”部分可以使用逗号来执行多个操作 – 如果三个部分都为空语句(分号;不能省),相当于一个无限循 环。
循环结构for循环,用的最多:
语法规则:
for( 初始化1 ; 条件判断2 ; 步进器4 ){
逻辑代码3;
}
执行顺序:1-2-3-4-2-3-4-2-3-4... ...
for循环的好处:
1、代码简洁
2、for循环中的初始化变量的作用域在循环结构中起作用
while循环的初始化变量的作用域是从定义变量开始到方法结束
import java.util.Scanner;
public class TestShopping{
public static void main(String[] args){
System.out.println("*********************************************");
System.out.println("请选择购买的商品编号:");
System.out.println("1.T 恤\t\t2.网球鞋\t3.网球拍");
System.out.println("*********************************************");
Scanner sc = new Scanner(System.in);
String flag = "y";
int pId = 0;
int pNum = 0;
double tPrice = 245.0;
double sPrice = 570.0;
double pPrice = 320.0;
double oneTotalPrice = 0;
double totalPrice = 0;
while("y".equals(flag)){
System.out.println();
System.out.print("请输入商品编号:");
pId = sc.nextInt();
if( pId != 1 && pId != 2 && pId != 3){
System.out.println("亲,您购买的商品不存在,请重新输入商品编号!!");
continue;
}
System.out.print("请输入购买数量:");
pNum = sc.nextInt();
switch(pId){
case 1:
oneTotalPrice = tPrice * pNum;
System.out.println("T 恤¥" + tPrice + "\t数量 " + pNum + " 合计 ¥" + oneTotalPrice);
totalPrice += oneTotalPrice;
oneTotalPrice = 0;
break;
case 2:
oneTotalPrice = sPrice * pNum;
System.out.println("网球鞋¥" + sPrice + "\t数量 " + pNum + " 合计 ¥" + oneTotalPrice);
totalPrice += oneTotalPrice;
oneTotalPrice = 0;
break;
case 3:
oneTotalPrice = pPrice * pNum;
System.out.println("网球拍¥" + pPrice + "\t数量 " + pNum + " 合计 ¥" + oneTotalPrice);
totalPrice += oneTotalPrice;
oneTotalPrice = 0;
break;
}
System.out.print("是否继续(y/n):");
flag = sc.next();
}
System.out.println();
System.out.print("折扣:");
double zk = sc.nextDouble();
double yf = totalPrice * zk;
System.out.println("应付金额:" + yf);
System.out.print("实付金额:");
double sf = sc.nextDouble();
if(sf < yf){
System.out.print("您输入的金额小于应付金额,请重新输入:");
sf = sc.nextDouble();
}
System.out.println("找钱:" + (sf - yf));
}
}
public class ForDemo{
public static void main(String[] args){
int i = 1;
for(;;){
System.out.println("i=" + i);
i++;
}
}
}