Требуется постоянное выражение? (оператор переключения java)

Пример 8: Логические операторы Java

class LogicOperator {
    public static void main(String[] args) {

        int number1 = 1, number2 = 2, number3 = 9;
        boolean result;

        // Хотя бы одно из выражений должно быть истинным, чтобы результат был истиной
        result = (number1 > number2) || (number3 > number1);
        // результат — истина, так как (number1 > number2) истинно
        System.out.println(result);

// Все выражения должны быть истинными, чтобы результат был true
        result = (number1 > number2) && (number3 > number1);
        // Результат будет ложным(false), так как (number3 > number1) ложно
        System.out.println(result);
    }
}

Когда вы запустите программу, на экран выведется:

true
false

Сниженные накладные расходы времени выполнения

Некоторые языки программирования с управляемым кодом выполнения , которые могут быть собраны в промежуточное представление, использовать только в срок (JIT) компиляции. Это, вкратце, компилирует промежуточный код в машинный код для собственного запуска во время выполнения промежуточного кода, что может снизить производительность приложения. Компиляция с опережением времени устраняет необходимость в этом шаге, поскольку выполняется перед выполнением, а не во время выполнения.

Опережающая компиляция динамически типизированных языков в машинный код или другой статический байт-код виртуальной машины возможна только в ограниченном количестве случаев. Например, компилятор AOT High Performance Erlang Project (HiPE) для языка Erlang может это сделать благодаря передовым методам восстановления статических типов и предположениям о типах.

В большинстве ситуаций с полностью скомпилированными программами и библиотеками AOT можно отбросить полезную часть среды выполнения , тем самым сэкономив дисковое пространство, память, время автономной работы и время запуска (без фазы разогрева JIT) и т. Д. Из-за этого, он может быть полезен во встроенных или мобильных устройствах.

Тернарный оператор

Продвинутые программисты часто используют тернарный оператор ? : вместо if-else. Тернарный оператор использует три операнда и записывается в форме:

Знак вопроса является переходом к блокам. Как видим, после вопросительного знака идут два блока. Если в условии получаем True, то используем первый блок. Если в условии у нас получается False, то используем второй блок.

Например, нужно вычислить, какое из двух чисел больше и занести результат в третью переменную:

При тернарном варианте код будет следующим:

Сравниваем два заданных числа. Так как 9 меньше 27, то берём выражение из первого блока, т.е. highNum.

Нельзя сказать, что такой код слишком читаем, поэтому можно не использовать в своей практике.

Конструкция break (continue) с указателем

Существует ещё одно решение, позволяющее прекратить работу нескольких вложенных циклов: операторы break и continue с указателем.

Синтаксис break с указателем:

Используем эту конструкцию для фрагмента кода из прошлого примера:

В результате с помощью указателя (его имя может быть любым) и слова break мы из внутреннего цикла перешли к внешнему и прекратили его работу. Эта конструкция применяется с различными типами циклов: for, while, do…while и foreach.

Вместо оператора break можно использовать continue с указателем. Отличие в том, что с помощью continue мы не прекращаем указанный цикл, а переходим к его следующей итерации. Вот, например, исправленный код из прошлого примера, но с использованием continue:

Примечания:

1. Заключать название цикла в фигурные скобки не обязательно, если его тело состоит всего из одной строки. Но на этом лучше не экономить, потому что при расширении тела цикла (когда вы будете модифицировать программу) про недостающие скобки очень легко забыть. Зато вовремя расставленные {} делают ваш код более читаемым.

2. Оператор break с указателем применим не только к циклам, но и к простым блокам кода. Но делать это не рекомендуется, так как даже блок-схемами очень сложно описать такое поведение программы. Код, где используются break с указателями, становится сложным для чтения и поддержки.

Пример 1

class Main {
    public static void main(String[] args) {

        int week = 4;
        String day;

        // switch statement to check day
        switch (week) {
            case 1:
                day = "Sunday";
                break;
            case 2:
                day = "Monday";
                break;
            case 3:
                day = "Tuesday";
                break;

            // match the value of week
            case 4:
                day = "Wednesday";
                break;
            case 5:
                day = "Thursday";
                break;
            case 6:
                day = "Friday";
                break;
            case 7:
                day = "Saturday";
                break;
            default:
                day = "Invalid day";
                break;
        }
        System.out.println("The day is " + day);
    }
}

Вывод:

В приведенном выше примере мы использовали оператор switch, чтобы узнать день недели. Здесь у нас есть переменная неделя, которая содержит целочисленное значение. Значение сравнивается с каждым случаем внутри блока переключателя.

Здесь значение недели равно 4. Следовательно, оно соответствует случаю 4. Таким образом, выполняется оператор внутри случая 4.

Пример 3

Допустим, у нас есть следующие вложенные операторы if-else:

public String exampleOfIF(String animal) {
    String result;
    if (animal.equals("DOG") || animal.equals("CAT")) {
        result = "domestic animal";
    } else if (animal.equals("TIGER")) {
        result = "wild animal";
    } else {
        result = "unknown animal";
    }
    return result;
}

Приведенный выше код выглядит не очень хорошо, и его будет сложно поддерживать и обдумывать. Чтобы улучшить читаемость, мы могли бы использовать здесь оператор switch:

public String exampleOfSwitch(String animal) {
    String result;
    switch (animal) {
        case "DOG":
            result = "domestic animal"; 
            break;
        case "CAT":
            result = "domestic animal";
            break;
        case "TIGER":
            result = "wild animal";
            break;
        default:
            result = "unknown animal";
            break;
    }
    return result;
}

Как показано выше, мы сравниваем animal аргумента switch с несколькими значениями case. Если ни одно из значений case не равно аргументу, то выполняется блок под меткой по умолчанию.

Проще говоря, оператор break используется для выхода из оператора switch.

Пример 2: Арифметические операторы

class ArithmeticOperator {
    public static void main(String[] args) {

        double number1 = 12.5, number2 = 3.5, result;

        // Используется оператор сложения 
        result = number1 + number2;
        System.out.println("number1 + number2 = " + result);

        // Используется оператор вычитания 
        result = number1 - number2;
        System.out.println("number1 - number2 = " + result);

        // Используется оператор умножения
        result = number1 * number2;
        System.out.println("number1 * number2 = " + result);

        // Используется оператор деления
        result = number1 / number2;
        System.out.println("number1 / number2 = " + result);

        // Используется оператор остатка
        result = number1 % number2;
        System.out.println("number1 % number2 = " + result);
    }
}

Когда вы запустите программу, на экран выведется:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

В примере с оператором деления Java, приведенном выше, использованные операнды – переменные. Кроме этого могут использоваться символьные значения. Например:

result = number1 + 5.2;
result = 2.3 + 4.5;
number2 = number1 -2.9;

Оператор «+» также может быть использован, чтобы соединить (конкатенировать) две строки или больше.

Компромиссы производительности

Компиляторы AOT могут выполнять сложную и расширенную оптимизацию кода , что в большинстве случаев JITing будет сочтено слишком дорогостоящим. Напротив, AOT обычно не может выполнять некоторые оптимизации, возможные в JIT, такие как оптимизация на основе профиля времени выполнения (PGO), распространение псевдоконстант или косвенное встраивание виртуальных функций . AOT должен компилироваться в целевую архитектуру, в то время как JIT может скомпилировать код, чтобы наилучшим образом использовать фактический процессор, на котором он работает, даже спустя годы после выпуска программного обеспечения.

Кроме того, JIT-компиляторы могут теоретически оптимизировать горячий код, делая предположения о коде. Сгенерированный код можно деоптимизировать, если спекулятивное предположение позже окажется неверным. Такая операция снижает производительность работающего программного обеспечения до тех пор, пока код снова не будет оптимизирован с помощью адаптивной оптимизации . Компилятор AOT не может делать такие предположения и должен вывести как можно больше информации во время компиляции. Он должен прибегать к менее специализированному коду, потому что он не может знать, какие типы будут проходить через метод. Такие проблемы можно решить с помощью оптимизации на основе профиля. Но даже в этом случае сгенерированный код не может быть динамически адаптирован к изменяющемуся профилю времени выполнения, как это сделал бы JIT-компилятор.

Пример 6: Операторы равенства и отношений

class RelationalOperator {
    public static void main(String[] args) {

        int number1 = 5, number2 = 6;

        if (number1 > number2)
        {
                System.out.println("number1 больше, чем number2.");
        }
        else
        {
                System.out.println("number2 больше, чем number1.");
        }
    }
}

Когда вы запустите программу, в которой используются операторы сравнения Java, на экран выведется:

number2 больше, чем number1.

Здесь мы использовали оператор «>», чтобы проверить, больше ли number1, чем number2.

Так как number2 больше, чем number1, результатом выражения number1 > number2 будет false.

Кроме операторов отношений, есть оператор сравнения типов instanceof, который сравнивает объект и определенный тип.

Например:

Git Essentials

Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!

int ourNumber = 10;

if(ourNumber > 8){ 
    if(ourNumber % 2 == 0){
       System.out.println("The number is larger than 8 and even");
    }
}
else if (ourNumber == 1) {
    System.out.println("1 is less than 8, so the previous if block isn't executed");
}
else {
    System.out.println("ourNumber is less than 8 and different than 1");
}

блоки всегда “принадлежат” одного и того же уровня, поэтому в вашем коде принадлежит , а не вложенному , который проверяет, четное ли число.

У вас может быть столько блоков, сколько вы хотите, но только один блок, который идет последним. Каждый , и блок, который оценивается как , будет выполнен:

Несколько выражений в одном операторе if

Еще одна очень полезная вещь-возможность проверять несколько условий в одном :

int ourNumber = 10;

if(ourNumber > 5 && (ourNumber % 2 == 0)){
    System.out.println("The number is larger than 8 and even");
}

Оператор является одним из логических операторов , поддерживаемых Java. BoolExpr логического выражения логическое true false

  • – является отрицанием, оно оценивает выражение в и наоборот.
  • – оператор И принимает значение , если оба выражения .
  • – оператор ИЛИ принимает значение , если по крайней мере одно из выражений .
  • – оператор короткого замыкания | И принимает значение true boolExpr1 bool Expr2 истинны короткого замыкания , потому что, если первое выражение ложно оба должны быть истинными bool Expr1
  • – оператор короткого замыкания | ИЛИ принимает значение true boolExpr1 bool Expr2 истинным короткое замыкание версия | bool Expr1 ^ bool Expr2
  • XOR принимает значение true boolExpr1 bool Expr2 один из них истинен ложен
true && false //false
(2 < 5) && (2 != 3) //true
false || true //true
true && ((false || false) ^ true) //true
(true && false) || false // false

Настоятельно рекомендуется использовать круглые скобки всякий раз, когда это имеет смысл. Последний пример работает так же без круглых скобок, но полагаться на приоритет оператора чрезвычайно рискованно и приводит к нечитаемому коду.

Троичные Конструкции

Единственным тернарным оператором (оператором, который принимает три операнда) в Java является оператор . Это работает как очень компактное заявление.

int max = 0;
if (a > b)
    max = a;
else max = b;

//can be written as
int max = (a > b) ? a : b; 

Вот как обычно выглядит троичная конструкция:

(expression) ? returnValueIfTrue : returnValueIfFalse

Троичные конструкции также могут работать без круглых скобок, хотя, как правило, скобки более удобочитаемы:

int max = a > b ? a : b;

Вы также можете использовать троичные конструкции для изменения переменных:

System.out.println("10% discount for orders above $50!");
double orderPrice = 55;
double finalPrice = orderPrice > 50 ? orderPrice*09 : orderPrice;
System.out.println("Your final price is $" + finalPrice);

И результат таков:

Your final price is $49.5

Используя конструкцию, мы также можем вызывать методы:

public void someMethod() {
    String userRole = "Admin";
    String result = userRole.equals("Admin") ? greetAdmin() : greetUser();
    System.out.println(result);
}

static String greetAdmin() {
    return "Hello Admin!";
}
static String greetUser() {
    return "Hello User!";
}

Логически это привело бы к:

Hello Admin!

Вложенные Троичные Конструкции

System.out.println("10% discount for all orders above $50 and additional $5 off if your order exceedes 2 items!");
double orderPrice = 140;
int quantity = 5;
double finalPrice = (orderPrice > 50) ? (quantity > 2) ? (orderPrice*0.9)-5 : orderPrice*0.9 : orderPrice;
System.out.println("Your final price is: $" + finalPrice);

Поскольку оба условия являются , вывод будет:

10% discount for all orders above $50 and additional $5 off if your order exceedes 2 items!
Your final price is: $121.0

Однако этот подход ужасно нечитабелен. Если возможно, избегайте вложенности троичных конструкций, хотя, если необходимо, разбейте их на более простые блоки. Для примера, этот пример можно сделать немного более читабельным:

System.out.println("10% discount for all orders above $50 and additional $5 off if your order exceedes 2 items!");
double orderPrice = 140;
int quantity = 5;
double finalPrice = (orderPrice > 50) ?
                        (quantity > 2) ?
                                (orderPrice*0.9)-5 : orderPrice*0.9
                    : orderPrice;
System.out.println("Your final price is: $" + finalPrice);

Управление потоком в коде необходимо абсолютно для каждого приложения. Такие утверждения, как и , являются фундаментальными строительными блоками, и каждый начинающий разработчик должен полностью контролировать/осознавать, как они работают.

Пример 2: создание калькулятора с использованием оператора switch

Программа ниже принимает от пользователя три ввода: один оператор и 2 числа. На основе оператора, предоставленного пользователем, он выполняет расчет чисел. Затем результат отображается на экране.

Перед тем как приступить к работе с программой, убедитесь, что вы знаете о Java Scanner, чтобы принимать данные от пользователя.

import java.util.Scanner;

class Main {
    public static void main(String[] args) {

        char operator;
        Double number1, number2, result;

        // create an object of Scanner class
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter operator (either +, -, * or /): ");

        // ask user to enter operator
        operator = scanner.next().charAt(0);
        System.out.print("Enter number1 and number2 respectively: ");

        // ask user to enter numbers
        number1 = scanner.nextDouble();
        number2 = scanner.nextDouble();

        switch (operator) {

            // performs addition between numbers
            case '+':
                result = number1 + number2;
                System.out.print(number1 + "+" + number2 + " = " + result);
                break;

            // performs subtraction between numbers
            case '-':
                result = number1 - number2;
                System.out.print(number1 + "-" + number2 + " = " + result);
                break;

            // performs multiplication between numbers
            case '*':
                result = number1 * number2;
                System.out.print(number1 + "*" + number2 + " = " + result);
                break;

            // performs division between numbers
            case '/':
                result = number1 / number2;
                System.out.print(number1 + "/" + number2 + " = " + result);
                break;

            default:
                System.out.println("Invalid operator!");
                break;
        }
    }
}

Вывод:

В приведенном выше примере мы использовали оператор switch для создания калькулятора на Java. Он выполняет расчет на основе оператора, предоставленного пользователем.

Вложенные операторы if

Вложенный оператор if используется для дальнейшей проверки данных после того, как условие предыдущего оператора if принимает значение true. Иными словами, вложенный оператор применяется в тех случаях, когда для выполнения действия требуется соблюдение сразу нескольких условий, которые не могут быть указаны в одном условном выражении. Необходимо помнить, что во вложенных операторах if-else вторая часть else всегда относится к ближайшему оператору if, за условным выражением которого следует оператор ; или блок операторов. Вот небольшой пример:

if(i == 10)
{
    if(j < 20) a = b;
    if(k > 100) c = d;
    else a = c;  // else относится к if(k > 100)
}
else a = d; // else относится к if(i == 10)

Цикл foreach

Для обхода массива или коллекции можно применять циклы for:

Синтаксис цикла foreach:

С его помощью можно переписать приведённые примеры обхода массива и коллекции. Получится такой код:

Результат выполнения обоих вариантов будет одинаковым, но конструкция сильно упростилась — теперь не нужно следить за счётчиком итераций. Цикл foreach сам поочерёдно берёт значения из массива/коллекции и помещает их в указанную перед двоеточием переменную.

Важно, чтобы тип переменной, указанной перед двоеточием, совпадал с типом массива/коллекции

Внимание: далее материал повышенной сложности (необходимо знание интерфейсов). На самом деле параметром после двоеточия может быть любой класс, который имплементирует интерфейс Iterable (а все коллекции-наследники java.util.Collection его имплементируют) и реализует метод iterator()

Мы можем даже самостоятельно создать класс, который будет передаваться в качестве параметра

На самом деле параметром после двоеточия может быть любой класс, который имплементирует интерфейс Iterable (а все коллекции-наследники java.util.Collection его имплементируют) и реализует метод iterator(). Мы можем даже самостоятельно создать класс, который будет передаваться в качестве параметра.

Пример такого кода:

Мы объявляем класс MyIterable, в нём создаём массив, по которому будем итерироваться. Реализуем метод iterator(), возвращающий объект интерфейса Iterator, а также hasNext и next. Метод hasNext вызывается перед каждой итерацией и проверяет, есть ли следующий элемент. Если не дошли до конца массива, то hasNext вернёт true.

Когда метод hasNext возвращает true, цикл foreach вызывает метод next, который должен вернуть следующий элемент. В нашем случае он, кроме того, увеличивает на 1 текущую позицию элемента массива для последующей итерации.

Под капотом цикл foreach выглядит как простой while, но такой код будет более громоздким:

Пример 4: Унарный оператор

class UnaryOperator {
    public static void main(String[] args) {

        double number = 5.2, resultNumber;
        boolean flag = false;

        System.out.println("+number = " + +number);
        // number равен здесь 5.2.

        System.out.println("-number = " + -number);
        // number равен здесь 5.2

        // ++number is Эквивалент number = number + 1
        System.out.println("number = " + ++number);
        // number равен здесь 6.2

        // -- number is Эквивалент number = number - 1
        System.out.println("number = " + --number);
        // number равен здесь 5.2

        System.out.println("!flag = " + !flag);
        // Флаг все еще ложный.
    }
}

Когда вы запустите программу, на экран выведется:

+number = 5.2
-number = -5.2
number = 6.2
number = 5.2
!flag = true

В Java можно использовать операторы «++» и «—» в качестве префикса и постфикса. Оператор «++» увеличивает значение на 1, а «—» уменьшает значение на 1.

int myInt = 5;
++myInt   // myInt принимает значение 6
myInt++   // myInt принимает значение 7
--myInt   // myInt принимает значение 6
myInt--   // myInt принимает значение 5

Есть большая разница в использовании операторов Java инкремента и декремента в префиксе и в постфиксе. Рассмотрим следующий пример.

Пример 5: Унарный оператор

class UnaryOperator {
    public static void main(String[] args) {

        double number = 5.2;

        System.out.println(number++);
        System.out.println(number);

        System.out.println(++number);
        System.out.println(number);
    }
}

Когда вы запустите программу, на экран выведется:

5.2
6.2
7.2
7.2

Когда выполняется выражение System.out.println(number++), первым вычисляется изначальное значение. Переменная number увеличивается только после этого. Поэтому вы получите на выходе 5.2. Далее, когда выполняется System.out.println(number), показывается значение 6.2.

Тем не менее, когда выполняется System.out.println(++number), number увеличивается на 1 перед тем, как будет выведено на экран. Так же обстоят дела и с оператором Java декремента.

Вложенные циклы

Внимание: для освоения этого раздела необходимо понимание принципов работы с массивами. Часто используют циклы, один из которых выполняется в теле другого, — их называют вложенными

Это может потребоваться для обхода двумерных массивов, генерации данных и много чего ещё. Вкладывать друг в друга можно разные циклы неограниченное количество раз

Часто используют циклы, один из которых выполняется в теле другого, — их называют вложенными. Это может потребоваться для обхода двумерных массивов, генерации данных и много чего ещё. Вкладывать друг в друга можно разные циклы неограниченное количество раз.

Вот примеры кода:

В этом фрагменте был создан двумерный массив chars, по которому мы прошли с помощью одного цикла for, вложенного в другой — тоже for. Для каждой итерации внешнего цикла выполняются все итерации вложенного в него внутреннего. Таким образом, для массива размерности 5 на 5 будет совершено 25 итераций — внешний цикл идёт по строкам, внутренний — по столбцам.

Ещё пример, но теперь уже трёх вложенных циклов:

Тут мы прошлись по значениям из трёх массивов и сгенерировали шесть сообщений с разными приветствиями, именами и вопросами.

Бывают ситуации, когда нужно внутри вложенного цикла прекратить выполнение текущего и того, в который он вложен. Если использовать для этого просто break, мы выйдем только из текущего цикла, а внешний продолжит работать:

Как видно из примера, ожидаемого результата (прекратить работу обоих циклов, если найдено число 5) мы не получили. В таких ситуациях можно использовать, например, проверку с помощью boolean-значения:

Мы вводим во внешний цикл логическую переменную check и присваиваем ей значение false. Если внутри второго цикла работа прекращается оператором break, перед этим check присваивается значение true. После завершения работы вложенного цикла проверяем во внешнем, что находится в нашей переменной check. Если true, значит, вложенный цикл был прерван и требуется прервать текущий.

Цикл while (с предусловием)

Этот цикл имеет следующую синтаксическую структуру:

В целом он не сильно отличается от цикла for — цикл while не имеет параметров <начальное действие> и <действие после итерации>, а содержит лишь условие. Это позволяет выполнять <тело цикла> до тех пор, пока выражение в условии возвращает true перед каждой итерацией.

Ранее мы рассматривали пример цикла for, в котором не были указаны параметры <начальное действие> и <действие после итерации>:

Его несложно переписать с использованием while:

Графически алгоритм работы можно представить такой схемой:

В отличие от for, в цикле while нельзя не указывать параметр <условие выполнения цикла>, то есть запрещена такая запись:

Цикл while называется циклом с предусловием, потому что первый раз условие выполнения проверяется перед первой итерацией. Если проверка вернёт значение false, то ни одна итерация не будет выполнена.

Цикл while обычно используется в случаях, когда:

  • число итераций не известно заранее;
  • счётчик итераций не требуется по логике программы.

Заявление break

Хотя большинство операторов switch в реальной жизни подразумевают, что должен быть выполнен только один из блоков case, оператор break необходим для выхода из switch после завершения блока.

Чтобы продемонстрировать это, опустим операторы break и добавим вывод в консоль для каждого блока:

public String forgetBreakInSwitch(String animal) {
    switch (animal) {
    case "DOG":
        System.out.println("domestic animal");
    default:
        System.out.println("unknown animal");
    }
}

Давайте выполним этот код ForgotBreakInSwitch(«DOG») и проверим вывод, чтобы убедиться, что все блоки выполняются:

Поэтому нам следует быть осторожными и добавлять операторы break в конце каждого блока, если нет необходимости переходить к коду под следующей меткой.

Единственный блок, в котором не требуется разрыв, – это последний, но добавление разрыва к последнему блоку делает код менее подверженным ошибкам.

Мы также можем воспользоваться этим поведением, чтобы опустить break, когда мы хотим, чтобы один и тот же код выполнялся для нескольких операторов case. Давайте перепишем пример из предыдущего раздела, сгруппировав первые 2 случая:

public String exampleOfSwitch(String animal) {
    String result;
    switch (animal) {
        case "DOG":
        case "CAT":
            result = "domestic animal";
            break;
        case "TIGER":
            result = "wild animal";
            break;
        default:
            result = "unknown animal";
            break;
    }
    return result;
}

Ошибка компиляции оператора Switch Требуется постоянное выражение

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»clear:both;»>

Мозг вытащил яму и записал процесс ее заполнения. , , Не позволяйте себе снова прыгать. , , , ,

Позвольте мне поговорить о типах, поддерживаемых switch: тип данных, стоящий за выражением switch, может быть только четырьмя целочисленными типами: byte, short, char и int, типами перечисления и типами java.lang.String (допускается только из Java 7), но не логический тип.

Ошибки ввода ненормальных типов следующие:

Ниже перечислены непостоянные ошибки:

Ошибка здесь: константа, используемая в этом случае, должна быть постоянной, то есть, если значение, которое будет использоваться для оценки, является константой, она должна быть окончательно изменена;

Иногда будет возникать такая сосуществующая ошибка (тип входного параметра не соответствует регистру). Если такое сообщение об ошибке обрабатывается сверху вниз, это на самом деле не повредит (не ограничиваясь ошибками переключения, другие функциональные сценарии также будут там).

Иногда я не обращаю внимания на тип ввода и уделяю слишком много внимания постоянной проблеме, которая тратит много времени.

Например: тип должен быть преобразован в 6 типов перед вводом параметра.В результате, параметр забывается, когда преобразование забывается, и затем обнаруживается, что нет проблемы с константой, являющейся последней модификацией. Это правильно? , ,

Интеллектуальная рекомендация

1. Для реальных сигналов (для понимания): A (ω) является соотношением амплитуды выходного сигнала и амплитуды входного сигнала, называемого частотой амплитуды. Φ (ω) — это разница межд…

Один. вести Многие люди задавали некоторые вопросы о создании проекта Flex + LCDS (FDS) в сообщениях и группах. Из-за операции ее трудно четко объяснить, поэтому я написал простой учебник (я обещал эт…

package com.example.phonehttp; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.widget.ScrollView; import android.widget.TextView; public class MainActi…

Он предназначен для реализации подкласса того же родительского класса с родительским классом. Полиморфизм Один и тот же ссылочный тип использует разные экземпляры для выполнения разных операций; Идея …

тема: Объедините два упорядоченных слоя в новый заказанный список и возврат. Новый список состоит из всех узлов двух связанных списков, данных сплавным. Пример: Анализ: два связанных списка состоит в …

Вам также может понравиться

D. Самая ценная строка Пример ввода 2 2 aa aaa 2 b c Образец вывода aaa c На самом деле, будучи задетым этим вопросом, вы должны быть осторожны. После инвертирования строки, если две строки имеют один…

Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother to make the gray scale of each cell becomes the average gray scale (rounding down) of all the 8 surro…

calc () может быть очень незнакомым для всех, и трудно поверить, что calc () является частью CSS. Поскольку он выглядит как функция, почему он появляется в CSS, поскольку это функция? Этот момент такж…

Основываясь на дереве регрессии, сформированном CART, а также на предварительной и последующей обрезке дерева, код выглядит следующим образом:…

Откат Обновление в режиме онлайн с версии Centos (CentOS Linux версии 7.3.1611 (Core) до CentOS Linux версии 7.5.1804 (Core)) # ошибка соединения yum-ssh после обновления yexpected key exchange group …

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: