Как сделать число отрицательным java

Добавил пользователь Валентин П.
Обновлено: 05.10.2024

В данном уроке мы продемонстрируем работу каждого из операторов. Для этого несколько слов стоит сказать об операторе присвоения =. Прошу не путать с оператором равенства ==. Он будет описан в следующих уроках.

Мы уже ранее использовали оператор = в предыдущих уроках, но не разбирали принцип его работы. А он достаточно прост. Например в выражении a = 1; переменной a присваивается целочисленное значение 1. В выражении a = 'a'; переменной a присваивается значение символа 'a' в юникоде. Переменным можно присваивать значения того типа, которого объявлена переменная. Если попытаться присвоить значение другого типа данных, компилятор выдаст ошибку. Переменным также можно присваивать значения арифметических выражений. Например, a = 2*3; или a = 4 * 5 * 6; Переменным можно присваивать значения других переменных или констант. Например,

a = b; В данном выражении мы присвоили переменной a значение переменной b, равное целому числу 3. Таким образом, переменная a теперь также имеет значение 3. То есть обе переменных теперь равны 3.

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

В данном случае мы присвоили переменной a значение выражения b + 2, то есть 5 + 2, то есть 7. После выполнения этой команды значение переменной a становится равным 7.

Итак, вернёмся к теме урока - к арифметическим операциям.

Оператор + сложение или конкатенация строк.

Этот оператор применим к числовым типам данным, например, int или float и т.д. А также к строковым String.

С числовыми типами данных, оператор работает очень просто. Например,

sum = chislo1 + chislo2

В данном случае оператор сложения выдаёт сумму двух переменных chislo1 и chislo2. Оператор = присваивает эту сумму переменной sum.

С текстовыми данными также нет ничего сложного.

String text1 = "Привет, ";

String text2 = "Мир!";

text = text1 + text2;

В данном случае мы объявили 3 текстовые переменные. Переменным text1 и text2 присвоили начальные значения. Переменной text присвоили значение суммы переменных text1 и text2. Полученное значение - "Привет, Мир!". В данном случае объединение значений переменных, а точнее текстовых данных, называется конкатенацией. В операторе System.out.println() объединение данных для вывода, в том числе данных разных типов, называется конкатенацией.

Операторы - и * вычитание и умножение

Работают только с числовыми типами данных. Аналогично оператору сложения. Если объявить, например, целочисленные переменные и задать им значения

int raznost = chislo2 - chislo1;

int proisvedenie = chislo1 * chislo2;

то соответственно значение переменной raznost будет 1, значением переменной proisvedinie будет 20.

В данном примере мы объявили 2 переменных raznost и proisvedenie и сразу присвоили им не чисто числовые значения, а значения, равные выражениям - разности переменных и произведению переменных. Это в Java также не возбраняется.

Оператор / деление

Здесь всё аналогично сложению, вычитанию и умножению, но стоит особо отметить один момент.

Если объявить переменные

int chastnoe = chislo2 / chislo1;

то понятно, что вычисленное значение переменной chastnoe будет равно 4.

Но если сделать так

int chastnoe = chislo2 / chislo1;

То, поскольку тип данных int - целочисленный, то результат округления отбросит всю дробную часть, оставив только целую часть числа. Другими словами, округлит значение переменной chastnoe вниз до целых чисел. Соответственно, в результате такой операции значение переменной chastnoe будет равно 3.

Оператор % Деление по модулю

Возьмём данные из предыдущего примера

int num = chislo2 % chislo1;

В данном случае значение переменной num будет равно остатку от деления. Число 7 на 2 не делится так, чтобы получилось целое число. Но на 2 делится число 6. Разница 7 - 6 = 1. Соответственно, остаток от деления равен 1.

Если поменять цифры,

int chislo2 = 12;

int num = chislo2 % chislo1;

то 12 на 5 не делится, но на 5 делится 10. 12 - 10 = 2. Соответственно, значение переменной num - остаток от деления равно 2.

Инкремент ++ и декремент --

Работают следующим образом

то выражение a++; увеличивает значение переменной a на единицу. Результат будет таким же как после исполнения кода a = a + 1;

Соответственно после исполнения кода

значение переменной a будет равно 8.

Декремент работает аналогично, уменьшая значение переменной на единицу. То есть после исполнения кода

значение переменной b будет равно 4. Тот же самый результат можно получить исполнением кода b = b - 1;

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

Теперь для закрепления материала давайте на практике наглядно посмотрим как работают все арифметические операции.

Создадим новый класс с именем Arifm

Внутри фигурных скобок класса Arifm объявим главный метод main

public static void main (String[] args)

Внутри фигурных скобок метода main объявим 3 переменные:

int chislo1 = 12;

Для наглядности выведем значения этих переменных на экран:

System.out.println("Значение переменной chislo1 " + chislo1);

System.out.println("Значение переменной chislo2 " + chislo2);

Далее переменной result будем поочередно присваивать значения, равные результатам арифметических операций с переменными chislo1 и chislo2 и выводить значение переменной result на экран:

result = chislo1 + chislo2;

System.out.println("Результат сложения значений переменных chislo1 и chislo2 равен " + result);

result = chislo1 - chislo2;

System.out.println("Результат вычитания значения переменной chislo2 из значения переменной chislo1 равен " + result);

result = chislo1 * chislo2;

System.out.println("Результат умножения значений переменных chislo1 и chislo2 равен " + result);

result = chislo1 / chislo2;

System.out.println("Результат деления значения переменной chislo1 на значение переменной chislo2 равен " + result);

Теперь для наглядности демонстрации выполнения оператора % - деления по модулю изменим значение переменной chislo2

это работает, но это не "СУХОЙ" и просто глупо иметь целый блок кода ТОЛЬКО для файла - .

Однако вы понимаете, что для вашего кода

Если найденный индекс равен 3, а slideNum равен 3,
тогда 3 false,
поэтому slideNum остается положительным ??

Мне это больше похоже на логическую ошибку.

Обратная сторона абс Math.abs(num) * -1 .

Основная формула преобразования положительного в отрицательное или отрицательного в положительное:

@AndrewBarber i * -1 , похоже, не работает в текущей версии Chrome. Используйте -Math.abs (1), но не знаю, почему это работает, надеюсь, кто-то сможет объяснить, почему.

@PhilipRollins i * -1 будет работать всегда. Не знаю, как вы пытались, может, у вас была опечатка. Но . что плохого в том, i = -i чтобы вместо i = i * -1 (или i *= -1 ) обратить положительное на отрицательное или отрицательное на положительное?

@DiegoZoracKy Я тоже так думал, но не для той версии Chrome, которую я использовал, и она работала в firefox, поэтому об опечатке не может быть и речи. Я сейчас использую Linux, но вы можете проверить свою теорию на Chrome. Помните об автоматических обновлениях хрома, поэтому любые исправления ошибок уже будут применены, а любые новые ошибки будут сообщены сообществу, что означает, что это может быть ошибка, которая длилась всего несколько дней и теперь исправлена ​​навсегда.

Чтобы получить отрицательную версию числа в JavaScript, вы всегда можете использовать ~ побитовый оператор.

Например, если у вас есть a = 1000 и вам нужно преобразовать его в отрицательный, вы можете сделать следующее:

6 сентября 2014 Мария (admin)

В уроке 8 мы затронули логические операторы, они нам были необходимы для формирования логического выражения в условиях if. Этот урок будет посвящен математике в Java, и поэтому мы рассмотрим подробнее арифметические операторы и частично возможности класса Math.

Но для начала, выясним, что же такое операторы. Операторы это специальные символы, отвечающие за ту или иную операцию, например сложение, умножение, сравнение. Все операторы в Java можно разбить на 4 класса — арифметические, битовые, операторы сравнения и логические.

Арифметические операторы в Java

Для стандартных арифметических операций, таких как сложение, вычитание, умножение, деление в Java используются традиционные символы, к которым мы привыкли со школы:

Примечание: при операции деления, если оба аргумента являются целыми числами, то в результате получим целое число. Дробная часть, если такая имеется, отбросится. Если хотим получить число с дробной частью, то нужно, чтобы один из аргументов был типа double. Это можно указать в самом выражении при помощи добавления после числа .0 или .d. Пример:

В Java также имеется специальный оператор %, обозначающий остаток от делния.

Пример использования: дан массив целых чисел, вывести на консоль только те числа, которые делятся на 3.

Операции с присваиванием

Рассмотрим задачу вывода на экран 10 первых четных чисел чисел

мы можем записать сокращенно

+= это оператор сложения с присваиванием. Подобные операторы есть для всех основных 5 операций, рассмотренных выше

Пример использования: Найти факториал числа 7.

Инкрементирование и декрементирование

Инкремент, обозначается ++ и увеличивает значение переменной на единицу. Декремент обозначается — и уменьшает значение на единицу. С инкрементом и декрементом мы часто встречаемся в цикле for.

Инкремент и декремент бывают двух форм

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

В первом случае сначала переменная a увеличится на 1, потом произойдет вычисление всего выражения. Во втором случае произойдет вычисление выражения при старом значении b = 3, и после вычисления b увеличится на 1, на результат в postfix это уже не повлияет.

Если вы поняли принцип работы постфиксного и префиксного инкремента/декремента, то предлагаю решить в уме такую задачу:

Вопрос: чему в итоге равны x и y? После того, как вы сделали предположение, проверьте его в java.

Задача со зведочкой. Дан код:

Какие числа будут выведены на экран? Почему? Разобраться самостоятельно.

Примечание: инкремент и декремент применяются только к переменной. Выражение вида 7++ считается недопустимым.

Математические функции и константы (класс Math)

Для решения задач нередко требуется использование математических функций. В Java такие функции включены в класс Math. Для того, чтобы использовать методы класса Math, нужно подключить его в начале .java файла с вашим кодом.

Часто используемые математические функции

  • sqrt(a) — извлекает квадратный корень из числа а.
  • pow(a, n)a возводится в степень n.
  • sin(a), cos(a), tan(a) — тригонометрические функции sin, cos и tg угла a указанного в радианах.
  • asin(n), acos(n), atan(n) — обратные тригонометрические функции, возвращают угол в радианах.
  • exp(a) — возвращает значение экспоненты, возведенной в степень a.
  • log(a) — возвращает значение натурального логарифма числа a.
  • log10(a) — возвращает значение десятичного логарифма числа a.
  • abs(a) — возвращает модуль числа a.
  • round(a) — округляет вещественное число до ближайшего целого.

Константы

Упражнения

  1. Дан массив целых чисел, найти среди элементов массива числа, которые делятся на 3 и на 6
  2. Посчитать среднее арифметическое чисел в массиве
  3. Известны катеты прямоугольного треугольника, найти его площадь и периметр
  4. Даны два целых числа, найти их наибольший общий делитель и наименьшее общее кратное
  5. Даны радиус вращения и высота конуса, вычислить объем конуса.


Категория: Уроки Java

Комментариев к записи: 13

Почему в выражении y = —y — y—; decrement со знаком минуса не срабатывает, а с плюсом работает?

не знаю почему у вас не срабатывает.. все должно срабатывать.

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

Здравствуйте,
в первом задании можно было 1 цикл использовать с условием if(arr[i]%3==0 && arr[i]%6==0) Проверку на >0 делать не обязательно. При поиске среднего арифметического можно бы было сразу работаться типом double. 4 задание не учтен случай, если числа равны. Еще как вариант, в случае n2>n1, можно значения n2 и n1 поменять местами, чтобы не писать потом один и тот же код 2 раза.

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

Пусть, к примеру, есть объявление, что площадь квадратного участка земли составляет 9 соток, и вы хотите посчитать длину стороны такого участка. Сотка - это 100 квадратных метров, а значит 9 соток - это 900 кв. метров. Длина стороны будет квадратным корнем из площади квадрата. Для расчета стороны нам поможет класс Math, и вот как он работает:

В этом примере мы запускаем функцию, которая возвращает значение. Так устроены все вычислительные функции – они берут параметры, делают вычисления и выдают результат там же, где были вызваны. Так и здесь вместо

потому что sqrt вернет число 10, и десятка подставится на место вызова sqrt. Мы вскоре сами будем писать функции, которые возвращают значение. Пока что воспользуемся библиотечными.

Класс Math содержит много функций для самых разных вычислений. Доступ к ним идет через слово Math и точку вот так:

Теперь давайте попробуем сделать более сложные выражения. Математические функции получают на вход число и в результате дают другое число. Поэтому можно результат одной функции сразу передавать другой. Посмотрим на примере:

Очень часто бывает нужно получить случайные числа. Например, в следующих темах мы с вами сделаем игру в лотерею, и нужно будет генерировать случайное счастливое число, а пользователь будет его угадывать - каждый раз разное. На помощь приходит простая функция Math.random, которая при запуске возвращает очередное случайное число в диапазоне от 0 до 1. Хотите диапазон от 0 до 100? Умножьте полученное число на 100. Подробнее посмотрим в коде:

Самое главное мы уже освоили. Теперь время решать задачи. Ответьте на несколько вопросов, чтобы лучше усвоился новый материал. Имейте в виду, некоторые ответы были освещены в темах раньше или не были освещены вообще, так что если приходится думать слишком много, то просто открывайте ответ по плюсику и читайте. Другое дело задачи из нашего задачника - только для некоторых типов задач дано решение. остальное вы должны написать сами.

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

Большинство математических функций возвращают ответ как дробное число. А в нашем коде написано:
int x = некоторое дробное;
Получается мы сохраняем дробное число в переменную, где могут храниться только целые, т.к. мы дали ей тип int. Компилятор переживает, что мы отбрасываем дробную часть, ведь возможно в ее вычислении и состояла вся задача.

Чтобы убрать ошибку нужно написать:
double x = Math.sqrt (100);
И другой вариант:
int x = (double) Math.sqrt (100);

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

Читайте также: