一.If条件分支结构
例:
Package day3
Import java.until Scanner;
Public class TestsIf{
Public static void main(String[] args){
//用户输入一个整数
System.out.println(“请输入一个整数”);
//If (布尔表达式){代码块}
Scanner s = new scanner(System .in);
Int n = s.nextInt();
if(n%2==0){
System.out.println(“偶数”);
}
}
}
语法1:(先判断,正确则执行)
if(布尔表达式){
//代码块
}
后续代码……
语法2:(先判断:正确→1,错误→2)
If(布尔表达式){
//代码块1
}else{
//代码块2
}
后续代码……
语法3:(多重判断)
If(布尔表达式1){
//代码块1
}else if(布尔表达式2){
//代码块2
}else if(布尔表达式3){
//代码块3
}else{
//代码块4
}
语法4:(嵌套)
If(外层表达式){
If(内层表达式){
//内层代码块1
}else{
//内层代码块2
}
}else{
//外层代码块
}
二.Switch条件表达式
Package day3;
Public class TestSwitch{
Public static void main (String[] args){
//能直接转换为int的数据类型(byte short int char)
//在JDK1.7版本中,Switch可以用字符串表达式“string”
/Switch(int表达式){
case 值1:代码块1;break;
case 值2:代码块2 ;break;
default:代码块/ // default可以写在任意位置但是除了在最后一行其他位置必须写break
}
java.until.Scanner s = new java.until.Scanner(System.in);
int a = s.nextInt();
switch(a){
//可以让多个值共享一行代码,当输入0和1时,都得出1
//如果没有加break,输入1,打印的是1、2、3、others
Switch(n){
case 1:System.out.println(1);break;//跳出
case 2:System.out.println(2);break;
case 3:System.out.println(3);break;
default:System.out.println(“others”);
}
String s = “abc”;
Switch(s){
case “abc”:System.out.println(“hehe”);
break;
case “hello”:System.out.println(“xxx”);
break;
}
三.循环结构
概念:通过某个条件,重复的执行一段逻辑代码
(1)While循环
While(布尔表达式){
//逻辑代码(循环操作)
}
(2)do while循环(先执行,再进行布尔表达式的判断)
do{
//逻辑代码(循环操作)
}while(布尔表达式);
Eg:
package day3;
public class TestLoop{
public static voin main(String[] args){
int i = 1;
int result = 0;
while(i<=100){
result+=i
i++;
}
/*
do{
result+=i;
i++;
}while(i<=100);
*/
System.out.println(result)
}
}
(3)for循环(确定循环次数)
for(初始部分;循环条件;迭代部分){
//循环操作
}
//定义可以省略,迭代部分可以写在逻辑代码后,如果省略循环换条件,则变为死循环
for(int i = 1;i<=100;i++){
result+=i;
}
System.out.prinltn(result);
注释:一般在确定循环次数时使用for循环,在不确定循环次数时使用while循环。
(4)流程控制的关键字
break:终止、跳出switch、循环结构
continue:跳出本次循环
eg:
package day3;
public class Test{
public static void main(String[] args){
/*loop:for(int = 1;i<=10;i++){
//if(i==9)break;得出的结果是12345678
//if(i==9)continue;得出的结果是124567810
System.out.println(“Hello World”+1);
}*/
loop:for(int i =1,i<=10;i++){
for( int j =1;j<=5,j++){
//可以给for循环起名字,当break loop时,是跳出整个被命名为loop的for循环。
if(i==4&&j==3)break loop;
System.out.print(“i=”+i“ j=”+j+“/t”);
}
//换行
System.out.println();
}
}
}
}
(5)局部变量
概念:声明在函数内部的变量,必须先赋值在使用
作用范围:定义行开始到所在的代码块结束
注意:多个变量,在重合的作用的范围内,不可出现重名
Eg1:
package day3;
public class Test1{
public static void main(String[] args){
//声明赋值
int a;
if(xxx){
a=10(错误,如果a满足条件,则a被赋值,如果不满足,则没有被赋值)
}
}
}
Eg2:
package day3;
public class Test1{
public static void main(String[] args){
//定义行开始到所在的代码块结束
if(true){
int b=10
}
System.out.println(b)(错误,b已经不再函数里面定义已经结束)
}
}
Eg3:
package day3;
public class Test1{
public static void main(String[] args){
//不允许在重合范围内,局部变量名重合
int a = 10;
System.out.println(a)
if(true){
int a=10
System.out.println(a)(错误,第一个a作用范围在第四行扫第十行,第二个a作用范围在第七行到第九行)
}
}
}
注释:语法当中不允许一个代码的开始点和结束点是重合的
Eg4:
if(true)int i =10;
错误应该改为:
if(true){
int i =10;
}
题目1:100块钱,公鸡3块钱一只,母鸡2块钱一只,小鸡一块钱3只
Package Test2;
public class Test{
public static viod main(String[] args){
for(int a =0;a<=100;a++){
for(int b =0;b<=100;b++){
int c = 100-a-b;
if(c%3!=0)continue;
int m =a*3+b*2+c/3;
if(m==100){
System.out.println(“公鸡有”+a“ 母鸡有”+b“ 小鸡有”+c);
}
}
}
}
}
优化后的代码:
package Test1;
public class Test{
public static void main(String[] agrs){
//假设全买公鸡
for(int a = 0;a<=33;a++){
//避免每一次内部循环都对(100-3a)/2重复运算
int maxb=(100-3a)/2;
//除去公鸡最多能买多少只母鸡
for(int b=0;b<=maxb;b++){
//除去公鸡和母鸡的个数的得出小鸡个数
int c = 100-a-b;
//小鸡的个数必须是整数
if(c%3!=0)continue;
//一共花了100元
int m = 3a+2b+3/c;
if(m==100){
System.out.println(“公鸡有”+a“ 母鸡有”+b“ 小鸡有”+c);
}
}
}
}
}
题目二:请在屏幕上输入一个等腰三角形
找规律:设置需要几列
假设等腰三角形的高是i,那么每一列的所需要的空格数为i-1,所需要的是2i-1
package Test2;
import java.until.*;
public class Test2{
public static void main(String[] args){
//输设置等腰三角形的高
System.out.println(“请设置等腰三角形的高”)
scanner s = new Scanner(System.in);
int n = s.nextInt();
//打印所需要的列数
for(int i = 1;i<n;i++){
//打印所需要的空格数
for(int j =1;j<=n-1;j++){
System.out.print(‘ ’);
}
//打印所需要的*个数
for(int j =1;j<=n-1;j++){
System.out.print(‘*’);
}
}
}
}