1.1 Controle de Processo
O fluxo de execução e a sequência de execução do procedimento de comando;
1.1.1 Classificação do Controle de Processo
I. Fluxo de sequência
O programa é executado linha por linha;
Durante a execução do programa, diferentes estratégias podem ser adotadas de acordo com diferentes situações de negócios. Executar diferentes fluxos de código;
III. Processo de circulação
Espera-se que algum código possa ser executado para frente e para trás através de um processo sem a necessidade de escrever repetidamente esses códigos;
1.2 Processo de Ramificação
1.2.1 ramo de comutação
JDK17 switch
Uso de zhuanlan.zhihu.com/p/408799706
switch(month){
case 12,1,2->System.out.println("你就像那冬天里的一把火");
case 3,4,5->System.out.println("春天在哪里呀!春天在哪里~");
case 6,7,8->System.out.println("夏天夏天悄悄过去 留下小秘密");
case 9,10,11->System.out.println("就让秋风带走我的思念 ");
}
复制代码
//测试switch语法结构
public class SwitchTest{
public static void main(String[] args) {
//声明一个变量 这个变量存储月份1-12, 通过存储的变量的值判定当前月份所属的季节
//1:声明变量存储月份
char month = 5;
//2:通过switch去完成
switch(month){
case 12:
case 1:
case 2:
System.out.println("你就像那冬天里的一把火"); break;
case 3:
case 4:
case 5:
System.out.println("春天在哪里呀!春天在哪里~");break;
case 6:
case 7:
case 8:
System.out.println("夏天夏天悄悄过去 留下小秘密");break;
case 9:
case 10:
case 11:
System.out.println("就让秋风带走我的思念 ");break;
default:
System.out.println("您的输入有误。。。");break;
}
System.out.println("GAME OVER");
}
}
复制代码
I. Estrutura gramatical
switch(expression){
case value1:
statement1;break;
case value2:
statement2;break;
case value3:
statement3;break;
.............
default:
statement3;[break;]
}
复制代码
II. Ordem de execução
- avaliar o valor de uma expressão
- Faça a correspondência do caso correspondente.Se a correspondência for bem-sucedida, a instrução de execução correspondente será executada;
- Certifique-se de quebrar mais tarde e pular para fora de toda a estrutura do switch;
- Se todos os casos não forem satisfeitos, o default é executado, se existir;
III. Precauções
- O resultado da expressão pode ser convertido em int por meio da conversão automática de tipo, e apenas quatro tipos de dados básicos podem ser usados: byte, short, int e char;
JDK1.5
Depois disso, os tipos de enumeração são suportadosEnum
eJDK1.7
as strings String são suportadas posteriormente;
1.2.2 se a estrutura da filial
// Math.random() 指定区间的随机数(整数) [1,8] [min,max]
// (int)(Math.random()*(max-min+1)+min)
复制代码
I, estrutura de ramo único
//测试if单分支
public class IfTest01{
public static void main(String[] args) {
// 生成一个随机数 查看随机数是否大于50 大于则显示随机数的结果反之则结束
double random = Math.random(); //[0-1)随机小数
System.out.println(random);
// Math.random() 指定区间的随机数(整数) [1,8] [min,max]
// (int)(Math.random()*(max-min+1)+min)
// 产生一个[45,80]
int num = (int)(Math.random()*36+45);
System.out.println(num);
//判定
if(num>50){
System.out.println("产生的数字大于50,数字是:"+num);
}
System.out.println("GAME OVER");
}
}
复制代码
A. Estrutura gramatical
if(expression){
statement;
}
复制代码
B. A ordem de execução
- Determine o resultado da expressão se o resultado for verdadeiro, execute a instrução de execução correspondente; termine o ramo inteiro se for único
- Se o resultado da expressão for falso, pule a ramificação if única e execute o código subsequente
C. Precauções
- A filial é relativamente simples e pode não ser capaz de utilizar plenamente os negócios mais complexos;
// 声明一个变量
boolean flag = true;
if(flag=false){
System.out.println("aa");
}
System.out.println("bb");
复制代码
II. Estrutura de ramal duplo
//测试if双分支
public class IfTest02{
public static void main(String[] args) {
// 判定某个数字的奇偶性
// 1: 随机生成一个数字 [20,56]
int random = (int)(Math.random()*37+20);
System.out.println("产生的随机数是:"+random);
//2: 判定奇偶性
//boolean flag = (random%2)==0;
/*if((random%2)==0){
System.out.println("产生的随机数是:"+random+",它是一个偶数");
}else{ //flag = false
System.out.println("产生的随机数是:"+random+",它是一个奇数");
}*/
String msg = (random&1)==1?"奇数":"偶数";
//System.out.println(msg);
System.out.println("产生的随机数是:"+random+",它是一个"+msg);
System.out.println("GAME OVER");
}
}
复制代码
A. Estrutura gramatical
if(expression){
statement1;
}else{
statement2;
}
复制代码
B. A ordem de execução
- Determine o resultado da expressão se o resultado for verdadeiro, execute a instrução de execução correspondente
statement1
; finalize a ramificação inteira if double - Se o resultado da expressão for falso, execute
statement
2, pule a ramificação if double e execute o código subsequente
C. Precauções
- A filial é relativamente simples e pode não ser capaz de utilizar plenamente os negócios mais complexos;
- O if-else no branch double deve ser executado um;
III. Estrutura multi-ramal
//测试if多分支
// 分别使用if和switch 来完成方向控制
// 45上 46右 47下 48左
public class IfTest03{
public static void main(String[] args) {
// 随机生成一个分数 判定分数的等级
// 100 NB [90-100) 优秀 [80-90) 良好 [70-80) 还行 [60-70) 勉强
//1:生成一个随机数
int score = (int)(Math.random()*92+9);
System.out.println("生成的分数是:"+score);
if(score==100){
System.out.println("NB");
}else if(score>=90 && score<100){
System.out.println("优秀");
}else if(score>=80 && score<90){
System.out.println("良好");
}else if(score>=70 && score<80){
System.out.println("还行");
}else if(score>=60 && score<70){
System.out.println("勉强");
}else{
System.out.println("男女混合双打");
}
System.out.println("GAME OVER");
}
}
复制代码
A. Estrutura gramatical
if(expression1){
statement1;
}else if(expression2){
statement2;
}else if(expression3){
statement3;
}..........{
}[else{ statementN;}]
复制代码
B. A ordem de execução
expression1
Se o resultado do julgamento for verdadeiro, execute a instrução de execução correspondentestatement1
; encerre todo o if multi-branch- Se o resultado da expressão for false, o resultado do julgamento
expression2
, se o resultado for true, executestatement
2, pule o if multi-branch e execute o código subsequente - e assim por diante
- Até que todos os resultados não sejam satisfeitos, se houver um else no código, execute o conteúdo do else
C. Precauções
- Várias ramificações podem fazer com que o código fique muito inchado, portanto, geralmente não é recomendado ter mais de 3 ramificações;
- Ao escrever condições, a eficiência de decisão de todo o ramo pode ser aumentada adequadamente;
- Se faz julgamento de intervalo, switch é julgamento equivalente, e eles podem se comunicar entre si;