Как сделать число отрицательным java
В данном уроке мы продемонстрируем работу каждого из операторов. Для этого несколько слов стоит сказать об операторе присвоения =. Прошу не путать с оператором равенства ==. Он будет описан в следующих уроках.
Мы уже ранее использовали оператор = в предыдущих уроках, но не разбирали принцип его работы. А он достаточно прост. Например в выражении 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) — округляет вещественное число до ближайшего целого.
Константы
Упражнения
- Дан массив целых чисел, найти среди элементов массива числа, которые делятся на 3 и на 6
- Посчитать среднее арифметическое чисел в массиве
- Известны катеты прямоугольного треугольника, найти его площадь и периметр
- Даны два целых числа, найти их наибольший общий делитель и наименьшее общее кратное
- Даны радиус вращения и высота конуса, вычислить объем конуса.
Категория: Уроки 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);
Когда мы слева от имени функции в скобках указываем тип, мы говорим компилятору - привести то, что справа в указанному типу несмотря ни на что. В данном случае - отбросить дробную часть, потеряв точность. Это называется приведение типов - у нас еще будет об этом целая тема.
Читайте также: