Java 基础 | 循环结构和数组

Posted 唐雕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 基础 | 循环结构和数组相关的知识,希望对你有一定的参考价值。

接着前几天的分支结构的回顾,今天主要回顾一下循环结构和数组方面的一些知识吧。
 
练习:输入一个数字,然后输出这个数字表示星期几
switch(选择){
    case 选项1:Code1;break;
    case 选项2:Code2;break;
    ……
}
 
1.switch() 中需要一个选项,选项只能是 byte/short/char/int,从JDK 1.7开始,允许使用 String
case 顺序不影响结果
2.如果有一个或者多个 case 之后没有 break,那么这个时候 case 之间的顺序影响结果
 
练习:输入两个数字以及一个符号,输出这两个数字在这个符号下运算产生的结果
5 9 +   ->14
练习:输入三个数字表示年月日,输出这一天在这一年时第几天
2012 3 5  ------>65
2014 3 5  ------>64
需要判断平年闰年:逢百整除 400;不逢百整除 4
2012 % 4 = 0
2100 % 400 = 0  --- false
 
循环结构:
用于完成一些相同或者相似的重复操作
 
while(逻辑值){
    Code;
}
 
练习:
1.求 1-100 以内所有的奇数的和  --- i=1; i+=2;
2.打印 100 以内能被 3 整除而不能被 7 整除的数字  int i = 0; i +=3;
3.输入一个数字,输出这个数字是一个几位数。*
4.输入一个数字,输出这个数字的所有因数。 --- 从 1 开始,逐个数字取余这个输入的数字,看是否能够整除  * 20:1 2 4 5 10 20  
定义一个循环,需要三个要素:定义一个变量来控制次数,利用判断条件决定循环结束;在循环过程中需要改变变量
 
do{
    Code;                //先执行代码块,再执行逻辑值,如果逻辑值为 true,转过头来继续执行代码块;如果为 false,就执行接下来的程序。
}whie(逻辑值);
 
注意:无论条件是否满足,do-while 的循环体必然至少执行一次。
                            2               7
for(){定义循环变量; 控制条件; 改变循环变量){    //
                1             4      5            6
    Code;
}
注意:对于 for 循环而言,如果第二部分的控制条件没有写,那么默认是 true,这个时候就成了一个死循环。
习惯上如果变化不规律或者次数不确定一般使用while(比如,从控制台获取一个大于 10 的奇数,有可能输入很多次,就是用这个)
 
while(n < 10 || n % 2 ==0){
    n =s.nextInt();
}
for(; n < 10 || n % 2 == 0; n = s.nextInt())
          //求 1-50 的和
		int sum = 0;
		//对于 for 循环而言,如果第二部分的控制条件没有写,那么默认是 true,这个时候就成了一个死循环。
		for(int i = 1; i <= 50; i++){
			sum += i;
			i++;
		}
		System.out.println(sum);

  

 
练习:百钱百鸡  --- 3 文钱 1只公鸡, 2 文钱 1 只 母鸡,1 文钱 3 只小鸡;100 文钱如何买恰好 100 只鸡? --- 先定义一个循环表示公鸡,嵌套一个循环表示母鸡,计算小鸡的个数,根据各种鸡的个数来计算钱数是否为 100
 
/**
练习:百钱百鸡  --- 3 文钱 1只公鸡, 2 文钱 1 只 母鸡,1 文钱 3 只小鸡;100 文钱如何买恰好 100 只鸡?
 --- 先定义一个循环表示公鸡,嵌套一个循环表示母鸡,计算小鸡的个数,根据各种鸡的个数来计算钱数是否为 100
*/
import java.util.Scanner;
public class Demo2d{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		for(int i = 1 ; i <= 33 ; i++)
		    for(int j = 1; j <= 50; j++){
			int k = 100 - i - j
			if(k % 3 == 0 && 3*i+2*j+k/3 == 100){
				System.out.print(i+","+j+","+k+"	");
			}
		    }
		}
}

  

 
break 和 continue
break:用于选择结构和循环结构,表示结束当前的一层结构
continue:只能用于循环结构,表示跳过本次循环继续下次循环,
 
扩展作业:一个循环打印九九乘法表
 
            for(int i = 1; i <= 9; i++){
			for(int j = 1; j <= i; j++){
				//if(i*j >= 10){
				//	System.out.print(i+"*"+j+"="+i*j+"   ");
				//}else{
				//	System.out.print(i+"*"+j+"="+i*j+"    ");
				//}
				System.out.print(i+"*"+j+"="+i*j+"	");//使用制表符 	,可以不用自己特意去控制了,自动左边对齐了。
			}
			System.out.println();	
			
	}

  

数组
存储同一类型的多个数据的容器 --- 大小固定的
数组会对放入其中的数据进行编号,编号是从 0 开始的 --- 下标(比数组的长度少一个)
数组的容量 --- 长度
 
 定义格式
数据类型[]  数组名 = new 数据类型[长度];
int  arr = new int[5]; 表示定义一个能存储 5 个整型元素的数组
arr[3] = 10;    arr[5] = 7; // ArrayIndexOutOfBoundsException ---数组下标越界异常
 
 内存
Java 将所占用的内存划分为了 5 块:栈内存(*)、堆内存(*)、方法区、本地方法栈(涉及到块语言的问题)、PC 计数器(寄存器,跟硬件相关)
  栈内存
用于存储变量的,变量在栈内存中使用完成之后会立即移除出栈内存,有种卸磨杀驴的样子。只要遇到 new ,就会在堆中开辟一块空间(从 0-n划分),有地址。对于里面的数据先默认一个值(0),当赋值后改变值。
  堆内存
用于存储对象(数组是一种特殊的对象)的。元素在存入堆内存中之后会自动的赋予默认值:byte/short/int -0   long -0L  float -0.0f  double -0.0  char -‘u0000‘  boolean -false,其他类型的默认值都是null。   [(表示数据类型 --- [ 表示数组)   I(如果这是一个数组,那么是这一部分表示数组中的元素类型 --- I 表示 Int)  @(标记符号,表示后边是一个地址) 15db9742(可以认为表示一个地址,实际上是这个对象的哈希码的十六进制形式)
对象在用完之后是在不确定的某个时刻被回收。
 
明天内容:
        数组
               定义
               内存
               应用
                        遍历、排序、查找、反转、复制
               时间/空间复杂度 --- 数列(等差数列求和)、指数、对数(对数公式 logab=logcb/logca,logabn=nlogab  logab=1/logba)
         二维数组         
 
 
 
 
 
 
 
 
 
 

以上是关于Java 基础 | 循环结构和数组的主要内容,如果未能解决你的问题,请参考以下文章

java 流程控制基础之if else

java基础知识之循环结构与数组

控制结构和数组

JavaSE基础--Java 循环结构

流程控制和数组

JAVA基础 —— 变量,选择,循环,数组,输入与输出等