Смена знака числа java

Смена знака числа java

Профиль
Группа: Участник
Сообщений: 93
Регистрация: 23.4.2011

Добрый Вечер.
Помогите Пожалуйста наисать программу которая будет считать, сколько раз в последовательности чисел меняется знак (например, в последовательности –5, –2, 9, 1, 0, 4, –3 знак меняется дважды: с минуса на плюс, затем с плюса на минус).
Без использования массива!

Код
import java.util.Scanner;

Профиль
Группа: Участник
Сообщений: 31
Регистрация: 3.10.2008
Где: Russia, Samara

Код
public class Main

public static void main(String[] args) Scanner con = new Scanner(System.in);

System.out.println(«Здравствуйте, уважаемый пользователь!»);
System.out.print(«Введите количество чиcел N, (N > 0) = «);

int total = con.nextInt();
int signChangeCounter = 0;

boolean prevIsNegative = false;

for (int i = 0; i < total; i++) System.out.print("Введите число № " + (i + 1) + ": ");
int parsed = con.nextInt();

boolean curIsNegative = parsed < 0;

if (i == 0) prevIsNegative = curIsNegative;
> else if (prevIsNegative != curIsNegative) signChangeCounter++;
>
>
>

Профиль
Группа: Участник
Сообщений: 93
Регистрация: 23.4.2011

Профиль
Группа: Участник
Сообщений: 93
Регистрация: 23.4.2011

Код
Введите количество чиcел N, (N > 0) = 7
Введите число № 1: -5
Введите число № 2: -2
Введите число № 3: 9
Введите число № 4: 1
Введите число № 5: 0
Введите число № 6: 4
Введите число № 7: -3
Количество смен знака в последовательности: 4
BUILD SUCCESSFUL (total time: 39 seconds)

(например, в последовательности –5, –2, 9, 1, 0, 4, –3 знак меняется дважды: с минуса на плюс, затем с плюса на минус).

Профиль
Группа: Участник
Сообщений: 31
Регистрация: 3.10.2008
Где: Russia, Samara

Прошу прощения. Глупейшая ошибка

Код
public class SignsReader

public static void main(String[] args) Scanner con = new Scanner(System.in);

System.out.println(«Здравствуйте, уважаемый пользователь!»);
System.out.print(«Введите количество чиcел N, (N > 0) = «);

int total = con.nextInt();
int signChangeCounter = 0;

boolean prevIsNegative = false;

for (int i = 0; i < total; i++) System.out.print("Введите число № " + (i + 1) + ": ");
int parsed = con.nextInt();

boolean curIsNegative = parsed < 0;

if (i != 0) if (prevIsNegative != curIsNegative) prevIsNegative = curIsNegative;
signChangeCounter++;
>
> else prevIsNegative = curIsNegative;
>
>

Профиль
Группа: Участник
Сообщений: 93
Регистрация: 23.4.2011

Код
boolean curIsNegative = parsed < 0;

Профиль
Группа: Участник
Сообщений: 31
Регистрация: 3.10.2008
Где: Russia, Samara

Суть в следующем:
Есть два флага curIsNegative и prevIsNegative. Первый указывает на то является ли текущее введенное число отрицательным, второй, соответственно, указывает на отрицательность предыдущего введенного значения. На первой итерации цикла выполняется операция prevIsNegative = curIsNegative, по скольку предыдущих значений у нас ещё нет. На последующих итерациях происходит сравнение флагов и в случае их неравенства, это и означает что знак был изменен. А если знак был изменен, то, происходит инкремент счетчика.

Профиль
Группа: Участник
Сообщений: 93
Регистрация: 23.4.2011

frikey,
Спасибо Вам большое за Помощь.
Если Вам не сложно, помогите Пожалуйста решить ещё одну задачу, выложенную мной в этом разделе!

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!

  • Название темы должно отражать её суть! (Не следует добавлять туда слова «помогите», «срочно» и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например «школьная задача», «задача из учебника» и т.п.), не нужно указывать ее сложность («простая задача», «легкий вопрос» и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку «Код»). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик — один вопрос!
  • В данном разделе запрещено поднимать темы , т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой «Пометить как решённый», которая находится под кнопками создания темы или специальным флажком при ответе.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »

[ Время генерации скрипта: 0.1149 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Как поменять знак числа java

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

class App  public static int changeSign(int num)  return -num; > > 
App.changeSign(-5); // 5 App.changeSign(7); // -7 App.changeSign(); // 0 

Источник

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

Чтобы сделать число отрицательным в Java , можно использовать знак минус перед числом или умножить число на -1.

int number = 10; // делаем число отрицательным number = -number; System.out.println(number); // => -10 // альтернативный способ int number2 = 5; number2 = -1 * number2; System.out.println(number2); // => -5 

Если число уже отрицательное, то можно просто использовать его со знаком минус:

int negativeNumber = -10; System.out.println(negativeNumber); // => -10 

Источник

Унарные операторы в Java

Уже завтра в OTUS скоро стартует новая профессиональная программа по подготовке к сертификации Oracle Java Programmer (OCAJP). Предлагаем вам посмотреть запись бесплатного Demo-урока «Типы данных Java: Идентификаторы и примитивы» и продолжаем публиковать серию статей Владислава Родина — руководителя группы разработки, преподавателя в МФТИ и foxminded.

Введение

Сертификация OCA (Oracle Certified Associate Java SE8 Programmer) предлагает ряд необычных заданий, проверяющих глубокое понимание принципов работы языка программирования Java. Целый блок посвящен выражениям, циклам и операторам. Про последние мы сегодня и поговорим.

Приоритет операторов

Оператор принимает на вход аргументы и возвращает некоторые значения. Выделяют унарные, бинарные и тернарные операторы. Например, !false — унарный, a + b — бинарный, а? : — является единственным оператором, принимающим на вход три аргумента.

Первое, что необходимо помнить, это приоритет выполнения операторов:

  1. Пост-унарные операторы: exception++ и exception—
  2. Пре-унарные операторы: ++exception и —exception
  3. Остальные унарные операторы: +, -, !
  4. Умножение, деление, взятие остатка: *, /, %
  5. Сложение и вычитание: +, —
  6. Операторы битового сдвига: >, >>>
  7. Операторы сравнения: , =, instanceof
  8. Операторы равенства-неравенства: ==, !=
  9. Логические операторы: &, |, ^
  10. Short-circuit логические операторы: &&, ||
  11. Тернарный оператор: boolean expression? expression1: expres-
    sion2
  12. Операторы присваивания: =, +=, -=, *=, /=, %=, &=, ^=, !=, <>=, >>>=

Работа с унарными операторами

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

Операторы смены знака и логической инверсии

Оператор логической инверсии ! применяется только к переменным типа boolean и превращает значение из true в false и наоборот. Например:

boolean x = false; System.out.println(x); // false x = !x; System.out.println(x); // true 

Оператор смены знака применяется только к числам и меняет знак на противоположный:

double x = 1.21; System.out.println(x); // 1.21 x = -x; System.out.println(x); // -1.21 x = -x; System.out.println(x); // 1.21 

Java в отличии от того же C четко разделяет целочисленные типы данных и boolean, в связи с чем применение оператора смены знака к boolean либо же применение оператора логической инверсии приводят к ошибкам компиляции:

int x = !5; // DOES NOT COMPILE boolean y = -true; // DOES NOT COMPILE boolean z = !0; // DOES NOT COMPILE 

Операторы инкремента и декремента

Операторы инкремента ++ и декремента применяются к целочисленным переменным и обладают двумя вариациям: post-инкремент (декремент) и pre-инкремент (декремент), в коде i++ (i—) и ++i (—i) соответственно. Разница между вариациями в том, что ++i увеличивает переменную и возвращает новое значение, а i++ возвращает старое значение, а только затем увеличивает переменную. Разницу более наглядно можно увидеть в таком куске кода:

int counter = 0; System.out.println(counter); // Outputs 0 System.out.println(++counter); // Outputs 1 System.out.println(counter); // Outputs 1 System.out.println(counter--); // Outputs 1 System.out.println(counter); // Outputs 0 

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

Что будет выведено в результате выполнения данной программы?

int x = 3; int y = ++x * 5 / x-- + --x; System.out.println("x is " + x); System.out.println("y is " + y); 

Проблема заключается в том, что x меняется несколько раз в одной строке.

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

int y = 4 * 5 / x-- + --x; // x assigned value of 4 int y = 4 * 5 / 4 + --x; // x assigned value of 3 int y = 4 * 5 / 4 + 2; // x assigned value of 2 

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

Читать ещё

Источник

Читайте также:  Javascript get if checkbox is checked
Оцените статью