Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

AnnaIvanova11 avatar AnnaIvanova11 21 Точки

misunderstanding of Boolean result

Здравейте,

Искам да помоля за малко помощ, относно Boolean - ите, опитах се да реша, приложената долу задача с два от тях. Имам решение с обикновенни проверки, но реших да пробвам с Boolean, изчетох каквото си открих в Google, но явно не съм схванала, защото изхода ми е различен, ако някой може да помогне малко.

Код, условие:

1.Номер

Поздравления, поради вашите задълбочени знания в сферата на програмирането МВР реши да наеме точно вас за създаването на новата им система за генериране на специални автомобилни номера. Всеки един специален автомобилен номер се състой от четири числа. Условията, които разграничават специалните от обикновените номера са следните:

  • Ако номерът започва с четна цифра, то той трябва да завършва на нечетна цифра и обратното – ако започва с нечетна,  завършва на четна
  • Първата цифра от номера е по-голяма от последната
  • Сумата от втората и третата цифра трябва да е четно число

Входа се състой от две числа - начало и край на интервал, между които трябва да се генерира всяко едно число от номера.

Вход

  1. Първи ред - едноцифрено число - началото на интервала – цяло число в интервала [1…9]
  2. Втори ред - едноцифрено число - края на интервала – цяло число в интервала [1…9]

Изход

На конзолата трябва да се отпечатат всички специални номера, разделени с интервал.

 

 

При числата 3 и 5 , трябва да изпечати: 4333 4353 4443 4533 4553 5334 5354 5444 5534 5554,а аз имам 


4333 4353 4443 4533 4553 5333 5334 5353 5354 5443 5444 5533 5534 5553 5554


import java.util.Scanner;

//greshno
public class carNumber {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int startNum = Integer.parseInt(scan.nextLine());
        int endNum = Integer.parseInt(scan.nextLine());

        boolean isItEqual = false;
        boolean isItOdd = false;

        for (int i = startNum; i <= endNum; i++) {

            if (i % 2 == 0) {
                isItEqual = true;
            }
            for (int j = startNum; j <= endNum; j++) {
                for (int k = startNum; k <= endNum; k++) {
                    for (int l = startNum; l <= endNum; l++) {
                        if (l % 2 == 1) {
                            isItOdd = true;
                        }
                        boolean flag = (i > l) && (j + k) % 2 == 0;

                        if (!isItEqual && (!isItOdd) && flag) {

                            System.out.printf("%d%d%d%d ", i, j, k, l);

                        }
                        if (isItEqual && isItOdd && flag) {

                            System.out.printf("%d%d%d%d ", i, j, k, l);

                        }
                    }
                }
            }
        }

    }
}

 

Тагове:
0
Programming Basics with Java 26/11/2019 22:40:49
Nikisf avatar Nikisf 72 Точки
Best Answer

Никъде не връщаш булевите на false, като кажеш веднъж, че са true и си седят така. Сложи на проверките за четно/нечетно по една елсе проверка да връща на false и би трябвало да си решиш проблема:

Пример:

if (l % 2 == 1) {
  isItOdd = true;
 }else {
 isItOdd = false;
 }

0
AnnaIvanova11 avatar AnnaIvanova11 21 Точки

Благодаря много! Сега разбрах, защото докато дебъгвах видях, че запазва стойността, бях останала с впечетлението обаче, че трябва да  се върне и да чекне в main метода. Беше ми много полезен отговора ! Мерси !

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.