1 for循环
案例:Demo1
1+1/2+1/3+1/4+1/5+1/6+...+1/100 = ?
1/1+1/2+1/3+1/4+1/5+1/6+...+1/100 = ?
分子都是1,分母是1~100
首先定义一个double类型变量sum=0,保存累加之和
第1次:sum = sum + 1/1
第2次:sum = sum + 1/2
第3次:sum = sum + 1/3
第4次:sum = sum + 1/4
第5次:sum = sum + 1/5
...
第100次:sum = sum + 1/100
定义变量double i = 0,i的取值1~100,i作为分母
公式:sum = sum + 1/i
for(double i=1;i<=100;i++){
sum = sum + 1/i;
}
案例:Demo1
1/1+1/2+1/3+1/4+1/5+1/6+...+1/100 = ?
public class Demo1 {
public static void main(String[] args) {
double sum = 0;
for(double i=1;i<=100;i++){
sum = sum + 1/i;
}
System.out.println(sum);
}
}
public class Demo2 {
//1+1/3+1/5+1/7+1/9+...1/99 = ?
//1/1+1/3+1/5+1/7+1/9+...1/99 = ?
//规律:分子都是1,分母1~99之间的奇数
public static void main(String[] args) {
//1 求出分母
double sum = 0;
for(double i=1;i<=99;i=i+2){
//2 累加求和:sum = sum+1/i
sum = sum + 1/i;
}
System.out.println("累加之和:"+sum);
}
}
//Demo3:
//1+1/2+1/4+1/6+1/8+1/10+...+1/200 = ?
public class Demo3 {
//1+(1/2+1/4+1/6+1/8+1/10+...+1/200) = ?
public static void main(String[] args) {
double sum=1;
for(double i=2;i<=200;i=i+2){
sum = sum + 1/i;
}
System.out.println("累加之和:"+sum);
}
}
2 break和continue
1)break:直接退出循环语句。
2)continue:结束本次循环,继续开始下次循环。
案例:Demo4
public class Demo4 {
public static void main(String[] args) {
for(int i=1;i<=30;i++){
if(i==10){
break;//直接退出循环
}
System.out.println(i);
}
}
}
public class Demo5 {
public static void main(String[] args) {
for(int i=1;i<=30;i++){
if(i==10){
continue;//结束本次循环,继续开始下次循环
}
System.out.println(i);
}
}
}
public class Demo6 {
//使用for循环,求出1~300之间所有的奇数累加之和,
//如果累加之和一旦超过5000,直接退出for循环,并
//输出当前的累加之和。
public static void main(String[] args) {
int sum = 0;
for(int i=1;i<=300;i=i+2){
sum = sum + i;
if(sum>5000){
break;
}
}
System.out.println(sum);
}
}
//Demo7: 使用for循环,求出1~100之间所有的奇数
//(2种写法)
public class Demo7 {
public static void main(String[] args) {
//方法1:
for(int i=1;i<=100;i++){
if(i%2!=0){
System.out.println(i);
}
}
//在for循环中定义的变量i,只在for循环中有效,在
//for循环外面无效
// System.out.println(i);
System.out.println();
//方法2:
for(int i=1;i<=100;i=i+2){
System.out.println(i);
}
}
}
3 循环嵌套
1)输出内容,不换行
System.out.print("要显示的内容");
案例:Demo8
public class Demo8 {
public static void main(String[] args) {
System.out.print("李斯,");
System.out.print("霍光,");
System.out.print("房玄龄,杜如晦,");
System.out.print("李善长,张居正。");
System.out.println();//换行
System.out.println("白起");
System.out.println("卫青,霍去病");
System.out.println("李靖,苏定方");
System.out.println("徐达,蓝玉");
}
}
public class Demo9 {
public static void main(String[] args) {
//*****
System.out.println("*****");
for(int i=1;i<=5;i++){
System.out.print("*");
}
}
}
public class Demo10 {
//***
//***
//***
public static void main(String[] args) {
for(int i=1;i<=6;i++){//行数
for(int k=1;k<=10;k++){//*列数
System.out.print("*");
}
System.out.println();
}
}
}
//Demo11:从控制台输入两个整数,分别作为打印长方形*的
//行数row和列数col
//比如:row:2 col:3
//***
//***
//外层循环:i=1 i<=3(true)
//内层循环第1次:k=1 k<=3(true) * k++(k:2)
// 第2次: k<=3(true) * k++(k:3)
// 第3次: k<=3(true) * k++(k:4)
// 第4次: k<=3(false) 退出内层循环
//换行
// i++(i:2)
//外层循环第2次: i<=3(true)
//内层循环: ***
//换行
// i++(i:3)
//外层循环第3次: i<=3(true)
//内层循环: ***
//换行
// i++(i:4)
//外层循环第4次: i<=3(false) 退出整个循环
import java.util.Scanner;
public class Demo11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入行数:");
int row = sc.nextInt();
System.out.println("请输入列数:");
int col = sc.nextInt();
for(int i=1;i<=row;i++){//行数
for(int k=1;k<=col;k++){//列数
System.out.print("*");
}
System.out.println();
}
}
}
public class Demo12 {
/*
*
**
***
****
*****
*/
public static void main(String[] args) {
for(int i=1;i<=10;i++){//行数
for(int k=1;k<=i;k++){
System.out.print("*");
}
System.out.println();
}
}
}
//Demo13:从控制台输入一个整数,作为打印直角三角形
//*的行数row,打印直角三角形*
//row:3
//*
//**
//***
//每行*的个数,跟当前的行数一致(i)。
//内层循环每次打印i个*,内层循环执行i次
//控制内层循环执行次数的k的取值:1~i
import java.util.Scanner;
public class Demo13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入行数:");
int row = sc.nextInt();
for(int i=1;i<=row;i++){
for(int k=1;k<=i;k++){
System.out.print("*");
}
System.out.println();
}
}
}
public class Demo14 {
//1*1=1
//1*2=2 2*2=4
//1*3=3 2*3=6 3*3=9
//1*4=4 2*4=8 3*4=12 4*4=16
//...
//1*9=9 2*9=18 ... 9*9=81
public static void main(String[] args) {
for(int i=1;i<=9;i++){
for(int k=1;k<=i;k++){
System.out.print(k+"*"+i+"="
+i*k+" ");
}
System.out.println();
}
}
}
2)循环嵌套:在一个循环语句的内部,又包含了一个循环语句。外层循环执行一次,内层循环执行所有。
for(int i=1;i<=3;i++){
for(int k=1;k<=3;k++){
System.out.print("*");
}
System.out.println();
}
4 数组
把相同类型的数据聚合在一起,使用数组来保存相同类型的多个数据。
1)创建数组格式:
数据类型[] 数组名 = new 数据类型[数据个数];
或者
数据类型 数组名[] = new 数据类型[数据个数];
eg:int[] ary = new int[5];
2)元素:数组中使用元素来保存数据,元素就相当于变量
3)下标:用来标识数组中的每一个元素,下标的取值从0开始,最后一个元素的下标值(元素总个数-1)
数组名[下标值] ---> 元素
eg:ary[0] = 100; //把100赋值给ary中第1个元素
ary[1] = 200;
ary[2] = 300;
ary[3] = 400;
ary[4] = 500;
案例:Demo15
public class Demo15 {
public static void main(String[] args) {
int[] ary = new int[6];
ary[0] = 100;
//分别把200,300,400,500,600依次的给其他元素赋值
ary[1] = 200;
ary[2] = 300;
ary[3] = 400;
ary[4] = 500;
ary[5] = 600;
System.out.println(ary[0]);
System.out.println(ary[1]);
System.out.println(ary[2]);
System.out.println(ary[3]);
System.out.println(ary[4]);
System.out.println(ary[5]);
// ary[6] = 1000;
//报错了,ary数组中只能保存6个元素,元素下标的取值
//0~5,ary[6]中下标的取值超过范围。
}
}
public class Demo16 {
public static void main(String[] args) {
double ary[] = new double[5];
ary[0] = 1.6;
ary[1] = 2.3;
ary[2] = 9.66;
ary[3] = 10.55;
ary[4] = 100.1;
//输出每一个元素的值
System.out.println(ary[0]);
System.out.println(ary[1]);
System.out.println(ary[2]);
System.out.println(ary[3]);
System.out.println(ary[4]);
}
}
public class Demo17 {
public static void main(String[] args) {
String[] ary = new String[6];
ary[0] = "徐志摩";
ary[1] = "梁思成";
ary[2] = "林徽因";
ary[3] = "林语堂";
ary[4] = "钱钟书";
ary[5] = "冰心";
System.out.println(ary[0]);
System.out.println(ary[1]);
System.out.println(ary[2]);
System.out.println(ary[3]);
System.out.println(ary[4]);
System.out.println(ary[5]);
}
}
4)元素的默认值:系统默认给元素赋的值
案例:Demo18
public class Demo18 {
public static void main(String[] args) {
//整型数组元素的默认值:0
int[] ary = new int[100];
System.out.println(ary[1]);//0
long[] ary2 = new long[100];
System.out.println(ary2[99]);//0
//浮点类型数组元素的默认值:0.0
double[] ary3 = new double[500];
System.out.println(ary3[10]);//0.0
//布尔类型数组元素的默认值:false
boolean[] ary4 = new boolean[100];
System.out.println(ary4[0]);//false
//引用类型数组元素的默认值:null
String[] ary5 = new String[20];
System.out.println(ary5[1]);
//null:用来表示引用类型变量没有值,为空。
}
}
整数类型数组元素的默认值是0
浮点类型数组元素的默认值是0.0
布尔类型数组元素的默认值是false
引用类型数组元素的默认值是null
null:当前引用类型的变量(元素)没有值,为空。
5)使用for循环来操作数组中的元素
分析:数组中通过下标来区分开每一个元素,下标的取值从0~元素总个数-1。通过控制循环次数变量i的取值,来指向数组中的每一个元素,i的取值0~元素总个数-1,作为元素的下标值。
for(int i=0;i<=元素总个数-1;i++){
数组名[i] ---> 元素
}
案例:Demo19
public class Demo19 {
//使用for循环来操作数组中的元素
//控制循环次数变量i的取值,作为数组元素的下标值
//for(int i=0;i<=元素总个数-1;i++){
// 数组名[i] -----> 元素
//}
public static void main(String[] args) {
//创建一个int类型数组ary,包含100个元素,分别把
//0~99之间的每一个整数赋值给ary数组中的每一个元素
//最后输出每一个元素的值
int[] ary = new int[100];
for(int i=0;i<=99;i++){
ary[i] = i;
System.out.println(ary[i]);
}
/*
for(int i=0;i<=99;i++){
System.out.println(ary[i]);
}
*/
}
}
public class Demo20 {
//Demo20:创建一个int类型数组ary,包含了200个元素,
//把0~199之间每一个整数给ary数组元素依次赋值,输出
//每一个元素的值。
public static void main(String[] args) {
int[] ary = new int[200];
for(int i=0;i<=ary.length-1;i++){
ary[i] = i;
System.out.println(ary[i]);
}
}
}
public class Demo21 {
//创建一个int类型数组ary,包含100个元素,把1~100
//之间的每一个整数给ary数组中元素依次赋值,最后输出
//每一个元素的值
//i 0~99
//i+1 1~100
public static void main(String[] args) {
int[] ary = new int[100];
for(int i=0;i<=99;i++){
ary[i] = i+1;
System.out.println(ary[i]);
}
}
}
public class Demo22 {
//创建一个int类型数组ary,包含200个元素,把1~200之间
//每一个整数给ary数组中元素依次赋值
//1 输出每一个元素的值
//2 求出所有元素的累加之和
// sum = sum + i
// sum = sum + ary[i]
public static void main(String[] args) {
int[] ary = new int[200];
for(int i=0;i<=199;i++){
ary[i] = i+1;
System.out.println(ary[i]);
}
//累加求和: sum = sum + ary[i]
int sum = 0;
for(int i=0;i<=199;i++){
sum = sum + ary[i];
}
System.out.println("元素累加之和:"+sum);
}
}
6)数组名.length:返回是数组中元素的总个数
案例:Demo23
public class Demo23 {
public static void main(String[] args) {
int[] ary = new int[200];
System.out.println(ary.length);//200
}
}
for(int i=0;i<=数组名.length-1;i++){
数组名[i] ---> 元素
}