[javaSE] programa de control lógico

Tabla de contenido

estructura secuencial

estructura de rama

si declaración

Formato de gramática 1

Formato gramatical 2

Formato de gramática 3

práctica

ejercicio uno

ejercicio dos

ejercicio tres

Precauciones

estilo de código

Estilo 1 -----> Recomendado

estilo 2

problema de punto y coma

otra pregunta pendiente

declaración de cambio

gramática básica

Proceso de implementación

ejemplo de código

Precauciones

estructura de bucle

mientras bucle

formato de gramática básica

ejemplo de código 1

código de ejemplo 2

ejemplo de código 3

ejemplo de código 4

Precauciones

romper

ejemplo de código

continuar

ejemplo de código

en bucle

gramática básica

Proceso de implementación

ejemplo de código

ejemplo uno

ejemplo dos

ejemplo tres

ejemplo cuatro

Precauciones

hacer mientras bucle

gramática básica

ejemplo de código

Precauciones

de entrada y salida

salida a la consola

gramática básica

 ejemplo de código

cadena de formato

entrada desde el teclado

Adivina el juego de números

reglas del juego

Código de referencia

práctica

Resumir


estructura secuencial

La estructura de la secuencia es relativamente simple y se ejecuta línea por línea de acuerdo con el orden en que se escribe el código.

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");

// 运行结果
aaa
bbb
ccc

Si ajusta el orden de escritura del código, el orden de ejecución también cambiará

System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");

// 运行结果
aaa
ccc
bbb

estructura de rama

si declaración

Formato de gramática 1

if(布尔表达式){
// 语句
}

Si la expresión booleana se evalúa como verdadera, se ejecuta la instrucción del if; de lo contrario, no se ejecuta.
Por ejemplo: Xiao Ming, si obtienes una puntuación de 90 o más en esta prueba, te recompensaré con un muslo de pollo.

int score = 92;
if(score >= 90){
    System.out.println("吃个大鸡腿!!!");
}

Formato gramatical 2

if(布尔表达式){
    // 语句1
}else {
    // 语句2
}

Si el resultado de la expresión booleana es verdadero, ejecute la declaración en el if, de lo contrario, ejecute la declaración en el else.

Por ejemplo: Xiao Ming, si obtienes más de 90 puntos en esta prueba, te recompensaré con una gran baqueta, de lo contrario, serás recompensado con una boca grande.

int score = 92;
if(score >= 90){
    System.out.println("吃个大鸡腿!!!");
}else{
    System.out.println("挨大嘴巴子!!!");
}

Formato de gramática 3

if(布尔表达式1) {
    // 语句1
}else if(布尔表达式2) {
    // 语句2
}else {
    // 语句3
}

 Si la expresión 1 es verdadera, ejecuta la instrucción 1; de lo contrario, la expresión 2 es verdadera, ejecuta la instrucción 2; de lo contrario, ejecuta la instrucción 3

Por ejemplo: Teniendo en cuenta la autoestima de los estudiantes, la clasificación de puntaje no se divulga, por lo que:

Los puntajes entre [90, 100] son ​​excelentes
Los puntajes antes de [80, 90) son buenos
Los puntajes entre [70, 80) son promedio
Los puntajes entre [60, 70) son buenos Si el
puntaje de aprobación está entre [0, 60), es un error
de datos

De acuerdo con el método anterior para notificar a los estudiantes de las calificaciones, el código es el siguiente

if(score >= 90){
    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 if(score >= 0 && score < 60){
    System.out.println("不及格");
}else{
    System.out.println("错误数据");
}

práctica

ejercicio uno

Determinar si un número es par o impar

int num = 10;
if (num % 2 == 0) {
    System.out.println("num 是偶数");
} else {
    System.out.println("num 是奇数");
}

ejercicio dos

Determinar si un número es positivo, negativo o cero

int num = 10;
if (num > 0) {
    System.out.println("正数");
} else if (num < 0) {
    System.out.println("负数");
} else {
    System.out.println("0");
}

ejercicio tres

Comprobar si un año es bisiesto

int year = 2000;
if (year % 100 == 0) {
// 判定世纪闰年
if (year % 400 == 0) {
    System.out.println("是闰年");
} else {
    System.out.println("不是闰年");
}
} else {
// 普通闰年
if (year % 4 == 0) {
    System.out.println("是闰年");
} else {
    System.out.println("不是闰年");
}
}

Precauciones

estilo de código

Estilo 1 -----> Recomendado
int x = 10;
if (x == 10) {
    // 语句1
} else {
    // 语句2
}
estilo 2
int x = 10;
if (x == 10)
{
    // 语句1
} 
else
{
    // 语句2
}

Aunque ambos métodos son legales, se recomienda usar el estilo 1 en Java, { poner en la misma línea que if / else. El código es más compacto

problema de punto y coma

int x = 20;
if (x == 10);
{
    System.out.println("hehe");
} 

// 运行结果
hehe

Aquí se escribe un punto y coma extra, lo que hace que el punto y coma se convierta en el cuerpo de la declaración if, y el código en { } se ha convertido en un bloque de código que no tiene nada que ver con un if

otra pregunta pendiente

int x = 10;
int y = 10;
if (x == 10)
    if (y == 10)
        System.out.println("aaa");
else
    System.out.println("bbb");

No es necesario que agregue llaves en la declaración if/else. Pero también puede escribir una declaración (solo puede escribir una declaración). En este momento, else coincide con el if más cercano. Pero no recomendamos escribir de esta manera. en desarrollo real Es mejor agregar grandes paréntesis.

declaración de cambio

gramática básica

switch(表达式){
    case 常量值1:{
    语句1;
    [break;]
    }
    case 常量值2:{
    语句2;
    [break;]
    }
    ...
    default:{
    内容都不满足时执行语句;
    [break;]
    }
}

Proceso de implementación

1. Primero calcule el valor de la expresión
. 2. Compare con el caso a su vez. Una vez que haya una coincidencia correspondiente, ejecute la declaración debajo del elemento hasta que encuentre una ruptura. 3.
Cuando el valor de la expresión no coincida con el elemento enumerado, ejecutar por defecto

ejemplo de código

Salida de la semana según el valor del día.

int day = 1;
switch(day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    case 4:
        System.out.println("星期四");
        break;
    case 5:
        System.out.println("星期五");
        break;
    case 6:
        System.out.println("星期六");
        break;
    case 7:
        System.out.println("星期日");
        break;
    default:
        System.out.println("输入有误");
        break;
}

Precauciones

1. El valor constante después de varios casos no se puede repetir

2. Los corchetes del interruptor solo pueden ser los siguientes tipos de expresiones

Tipo básico: byte, char, short, int, tenga en cuenta que no puede ser de tipo largo
Tipo de referencia: cadena cadena constante, tipo de enumeración

double num = 1.0;
switch(num) {
    case 1.0:
        System.out.println("hehe");
        break;
    case 2.0:
        System.out.println("haha");
        break;
} 

// 编译出错
Test.java:4: 错误: 不兼容的类型: 从double转换到int可能会有损失
switch(num) {
^
1 个错误

 3. No se pierda el descanso, de lo contrario se perderá el efecto de la "selección de múltiples sucursales"

int day = 1;
switch(day) {
    case 1:
        System.out.println("星期一");
        // break;
    case 2:
        System.out.println("星期二");
        break;
} 

// 运行结果
星期一
星期二

4. Switch no puede expresar condiciones complejas

// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num > 10 && num < 20) {
    System.out.println("hehe");
}

5. Aunque el interruptor admite el anidamiento, es feo y, en general, no se recomienda

int x = 1;
int y = 1;
switch(x) {
    case 1:
        switch(y) {
            case 1:
                System.out.println("hehe");
                break;
        }
        break;
    case 2:
        System.out.println("haha");
        break;
}

La belleza del código también es un criterio importante.Después de todo, este es un mundo de cara.

En resumen, encontramos que el uso del interruptor es relativamente limitado

estructura de bucle

mientras bucle

formato de gramática básica

while(循环条件) {
    循环语句;
}

Si la condición del ciclo es verdadera, ejecute la declaración del ciclo; de lo contrario, finalice el ciclo.

ejemplo de código 1

imprime los números 1 - 10

int num = 1;
while (num <= 10) {
    System.out.println(num);
    num++;
}

código de ejemplo 2

 Calcular la suma de 1 - 100

int n = 1;
int result = 0;
while (n <= 100) {
    result += n;
    n++;
}
System.out.println(num);

// 执行结果
5050

ejemplo de código 3

Calcular el factorial de 5

int n = 1;
int result = 1;
while (n <= 5) {
    result *= n;
    n++;
} 
System.out.println(num);

// 执行结果
120

ejemplo de código 4

Calcula 1!+2!+3!+4!+5!

int num = 1;
int sum = 0;
// 外层循环负责求阶乘的和
while (num <= 5) {
    int factorResult = 1;
    int tmp = 1;
    // 里层循环负责完成求阶乘的细节.
    while (tmp <= num) {
        factorResult *= tmp;
        tmp++;
    } 
    sum += factorResult;
    num++;
}
System.out.println("sum = " + sum);

Aquí encontramos que cuando un código contiene múltiples bucles, la complejidad del código aumenta considerablemente. Y el código más complejo es más propenso a errores, y usaremos un método más simple para resolver este problema más adelante.

Precauciones

1. Similar a if, la siguiente declaración while no puede escribir { }, pero solo se admite una declaración cuando no está escrita. Se recomienda agregar { } 2.
Similar a if, se recomienda escribir { after while la misma línea que while 3.
Similar a if, no escriba más puntos y comas después de while, de lo contrario, es posible que el bucle no se ejecute correctamente.

int num = 1;
while (num <= 10); {
    System.out.println(num);
    num++;
} 

// 执行结果
[无任何输出, 程序死循环]

En este momento; es el cuerpo de la declaración de while (esta es una declaración vacía), y la parte real { } no tiene nada que ver con el ciclo. En este momento, la condición del ciclo num <= 10 siempre es verdadera, lo que resulta en una bucle infinito del código.

romper

La función de break es dejar que el ciclo termine antes

ejemplo de código

Encuentra el primer múltiplo de 3 de 100 - 200

int num = 100;
while (num <= 200) {
    if (num % 3 == 0) {
        System.out.println("找到了 3 的倍数, 为:" + num);
        break;
    } 
    num++;
} 

// 执行结果
找到了 3 的倍数, 为:102

La ejecución para romper terminará el bucle.

Nota: el descanso solo puede saltar de una capa de bucles, si necesita saltar de varias capas de bucles, necesita múltiples descansos

continuar

La función de continuar es saltar este ciclo e ingresar inmediatamente al siguiente ciclo

ejemplo de código

Encuentra todos los múltiplos de 3 de 100 a 200

int num = 100;
while (num <= 200) {
    if (num % 3 != 0) {
        num++; // 这里的 ++ 不要忘记! 否则会死循环.
        continue;
    } 
    System.out.println("找到了 3 的倍数, 为:" + num);
    num++;
}

Cuando se ejecuta la instrucción continuar, ingresará inmediatamente al siguiente ciclo (determinar la condición del ciclo), de modo que la instrucción de impresión a continuación no se ejecutará.

en bucle

gramática básica

for(表达式①;布尔表达式②;表达式③){
    表达式④;
}

Expresión 1: se utiliza para inicializar la configuración del valor inicial de la variable de ciclo, que se ejecuta al comienzo del ciclo, y solo una vez Expresión 2:
la condición del ciclo, si está lleno, el ciclo continúa, de lo contrario, el Expresión
3: El método de actualización de variables de bucle

Proceso de implementación

①②③④--->②③④--->②③④--->②③④--->②③④--->②③④--->...--->② es falso, el ciclo termina

ejemplo de código

ejemplo uno

1. Imprime los números del 1 al 10

for (int i = 1; i <= 10; i++) {
    System.out.println(i);
}

ejemplo dos

2. Calcula la suma de 1 - 100

int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i;
} 
System.out.println("sum = " + sum);

// 执行结果
5050

ejemplo tres

3. Calcula el factorial de 5

int result = 1;
for (int i = 1; i <= 5; i++) {
    result *= i;
} 
System.out.println("result = " + result);

ejemplo cuatro

4. Calcula 1!+2!+3!+4!+5!

int sum = 0;
for (int i = 1; i <= 5; i++) {
    int tmp = 1;
    for (int j = 1; j <= i; j++) {
        tmp *= j;
    } 
    sum += tmp;
} 
System.out.println("sum = " + sum);

Precauciones

1. Similar a if, { } se puede omitir para la siguiente declaración for, pero solo se admite una declaración cuando no está escrita. Se recomienda agregar { } 2.
Similar a if, se recomienda escribir { después de for la misma línea que while 3.
Similar a if, no escriba más puntos y comas después de for, de lo contrario, es posible que el ciclo no se ejecute correctamente
4. Al igual que el ciclo while, use continue para finalizar un solo ciclo y break para finalizar el ciclo completo

hacer mientras bucle

gramática básica

do{
    循环语句;
}while(循环条件);

Ejecute primero la declaración del ciclo, luego determine la condición del ciclo, si se cumple la condición del ciclo, continúe con la ejecución; de lo contrario, el ciclo finaliza

ejemplo de código

imprimir 1 - 10

int num = 1;
do {
    System.out.println(num);
    num++;
} while (num <= 10);

Precauciones

1. No olvide el punto y coma al final del ciclo do while
2. Generalmente, do while se usa raramente, y se recomienda usar for y while

de entrada y salida

salida a la consola

gramática básica

System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出

El contenido de salida de println viene con \n, y print no tiene \n.El
método de salida formateado de printf es básicamente el mismo que el de printf en lenguaje C.

 ejemplo de código

System.out.println("hello world");

int x = 10;

Systm.out.printf("x = %d",x);

cadena de formato

carácter de conversión tipo ejemplo
d entero decimal ("%d", 100) 100
X entero hexadecimal ("%x", 100) 64
o entero octal ("% o", 100) 144
F punto fijo punto flotante ("%f", 100f) 100.000000
mi exponente flotante ("%e", 100f) 1.000000e+02
gramo punto flotante general ("%g", 100f) 100.000
a flotador hexagonal ("%a", 100) 0x1.9p6
s cadena ("%s", 100) 100
C personaje ("%c", '1') 1
b valor booleano ("%b", 100) verdadero
h código hash ("% h", 100) 64
% signo de porcentaje ("%.2f%%", 2/7f) 0,29%

entrada desde el teclado

Use Scanner para leer cadenas/enteros/flotantes

import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
sc.close(); // 注意, 要记得调用关闭方法

// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名: 张三
年龄:18
工资:1000.0

Use Scanner para leer N números en un bucle y calcular su promedio

Scanner sc = new Scanner(System.in);
int sum = 0;
int num = 0;
while (sc.hasNextInt()) {
    int tmp = sc.nextInt();
    sum += tmp;
    num++;
} 
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();

// 执行结果
10
40.0
50.5
^Z
sum = 150.5
avg = 30.1

Nota: cuando ingrese varios datos en un bucle, use ctrl + z para finalizar la entrada (ctrl + z en Windows, ctrl + d en Linux/Mac)

Adivina el juego de números

reglas del juego

El sistema genera automáticamente un número entero aleatorio (1-100), y luego el usuario ingresa un número adivinado. Si el número ingresado es menor que el número aleatorio, indicará "bajo", si el número ingresado es mayor que el número aleatorio. , indicará "alto", si el número de entrada es igual al número aleatorio, indicará "adivina bien".

Código de referencia

import java.util.Random;
import java.util.Scanner;;
class Test {
    public static void main(String[] args) {
        Random random = new Random(); // 默认随机种子是系统时间
        Scanner sc = new Scanner(System.in);
        int toGuess = random.nextInt(100);
        // System.out.println("toGuess: " + toGuess);
        while (true) {
            System.out.println("请输入要输入的数字: (1-100)");
            int num = sc.nextInt();
            if (num < toGuess) {
                System.out.println("低了");
            } else if (num > toGuess) {
                        System.out.println("高了");
                    } else {
                            System.out.println("猜对了");
                            break;
                      }
        } 
        sc.close();
    }
}

práctica

1. Según la edad, las personas que imprimen la edad actual son juveniles (menores de 18 años), jóvenes (19-28), de mediana edad (29-55), ancianos (mayores de 56) 2. Determinar si un número es un número primo
3.
Imprime todos los números primos entre 1 y 100
4. Muestra todos los años bisiestos entre 1000 y 2000
5. Muestra la tabla de multiplicar
6. Encuentra el máximo común divisor de dos números enteros positivos
7. Encuentra todos los "narcisos" entre 0 y 999 Número de flores" y salida. ("Número de Narciso" se refiere a un número de tres dígitos, y la suma cúbica de sus dígitos es exactamente igual al número
en sí, como: 153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3, entonces 153 es un " número de narcisos".)
8. Escriba una función para devolver el número de 1 en el parámetro binario
. Por ejemplo: 15 0000 1111 4 1s
9. Obtenga todos los bits pares e impares en la secuencia binaria de un número y genere el binario secuencia respectivamente.

Resumir

Este es el final de la explicación de "Control Lógico del Programa". Le invitamos a dejar un mensaje para el intercambio y la crítica. Si el artículo es útil para usted o cree que la escritura del autor no es mala, puede hacer clic para seguir, como y marcador para apoyar.

Supongo que te gusta

Origin blog.csdn.net/m0_71731682/article/details/131910149
Recomendado
Clasificación