Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 2
Регистрация: 08.06.2010
Сообщений: 31

Как прописать 12 if-ов в одной программе ?

13.12.2010, 10:55. Показов 960. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!)
Знаю что if это зло, но другого пути у меня нет.
Задача состоит в том что бы когда я ввожу дату рождения (например 21.06) программа мне выдает кто я по зодиаку.
А в данный момент оно выдаёт все знаки зодиака...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package Cart;
import java.io.*;
 class  ListPerson
{
    private String famely;
    private double rik;
    private String famely2;
    private double rik2;
    private String famely3;
 
protected ListPerson(String a, double b,String a2, String a3, double b2)
{
 
    this.famely=a;
    this.rik=b;
    this.famely2=a2;
    this.rik2=b2;
     this.famely3=a3;
}
 
  public static void main(String[] args)
    throws Exception
    {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
 
    System.out.println("Введите кол-во карточек");
    int n=Integer.parseInt(r.readLine());
    ListPerson d1[]=new ListPerson[n];
    String a;
    double b;
 
    for (int i=0; i<n; i++)
    {
     System.out.println("Введите имя");
     a=String.valueOf(r.readLine());
     System.out.println("Введите дату рождения (например: 21.06");
     b=Double.parseDouble(r.readLine());
 
     if(b>=21.03 || b<= 20.04)
     System.out.println("Вы Овен");
     else
     System.out.println("-");
     if(b>=21.04 || b<= 21.05)
     System.out.println("Вы Телец");
     else
     System.out.println("-");
     if(b>=22.05 || b<= 21.06)
     System.out.println("Вы Близнецы");
     else
     System.out.println("-");
     if(b>=22.06 || b<= 22.07)
     System.out.println("Вы Рак");
     else
     System.out.println("-");
     if(b>=23.07 || b<= 23.08)
     System.out.println("Вы Лев");
     else
     System.out.println("-");
     if(b>=24.08 || b<= 22.09)
     System.out.println("Вы Дева");
     else
     System.out.println("-");
     if(b>=23.09 || b<= 22.10)
     System.out.println("Вы Весы");
     else
     System.out.println("-");
     if(b>=23.10 || b<= 21.11)
     System.out.println("Вы Скорпион");
     else
     System.out.println("-"); 
     if(b>=22.11 || b<= 21.12)
     System.out.println("Вы Стрелец");
     else
     System.out.println("-");
     if(b>=22.11 || b<= 20.12)
     System.out.println("Вы Козерог");
     else
     System.out.println("-");
     if(b>=21.12 || b<= 19.01)
     System.out.println("Вы Водолей");
     else
     System.out.println("-");
     if(b>=20.02 || b<= 20.03)
     System.out.println("Вы Рыбы");
     else
     System.out.println("-");
 
     System.out.println("Введите кол-во карточек которые хотите добавить");
    int l=Integer.parseInt(r.readLine());
    ListPerson d2[]=new ListPerson[l];
    String a2,a3;
    double b2;
    {
    for (int p=0; p<l; p++)
    {
    System.out.println("Введите имя");
     a2=String.valueOf(r.readLine());
     System.out.println("Введите дату рождения (например: 21.06");
     b2=Double.parseDouble(r.readLine());
     }
 
    }}}}
Что мне делать ? как записать иф-ы так что бы они работали правильно ?
Я уже много чего пробывал не помогало...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2010, 10:55
Ответы с готовыми решениями:

Функции, ln, как прописать в программе?
Приветствую, подскажите как прописать функции f1 (25 строчка) и f2 (31 строчка) #include &lt;iostream&gt; #include &lt;clocale&gt; ...

Как прописать в программе число П и сумму
Помогите прописать в коде сумму и П

Как прописать переадресацию с одной страницы на другую
Всем привет.. кто знает как прописать переадресацию с одной страницы на другую при условии что одной страницы физически нет.. Вот пример ,...

8
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
13.12.2010, 11:51
Ифы писать надо правильно
Java
1
2
3
4
5
6
if () {
} else if () {
} else if () {
...
} else {
}
1
Заблокирован
13.12.2010, 11:56
в условиях типа
(b>=21.03 || b<= 20.04)
нужно знак "||" поменять на "&&"
1
0 / 0 / 2
Регистрация: 08.06.2010
Сообщений: 31
13.12.2010, 12:33  [ТС]
aleksandy не хочет.
вот я так написал:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
if(b>=21.03 && b<= 20.04)
     {
     System.out.println("Вы Овен");
     }
     else
     if(b>=21.04 && b<= 21.05)
     {
     System.out.println("Вы Телец");
     }
 else
     if(b>=22.05 && b<= 21.06)
     {
         System.out.println("Вы Близнецы");
     }
else
     if(b>=22.06 && b<= 22.07)
     {
 
         System.out.println("Вы Рак");
     }
         else
     if(b>=23.07 && b<= 23.08)
     {
         System.out.println("Вы Лев");
     }
else
     if(b>=24.08 && b<= 22.09)
     {
         System.out.println("Вы Дева");
     }
else
     if(b>=23.09 && b<= 22.10)
     {
         System.out.println("Вы Весы");
     }
else
     if(b>=23.10 && b<= 21.11)
     {
         System.out.println("Вы Скорпион");
     }
else
     if(b>=22.11 && b<= 21.12)
     {
         System.out.println("Вы Стрелец");
     }
else
     if(b>=22.11 && b<= 20.12)
     {
         System.out.println("Вы Козерог");
     }
else
     if(b>=21.12 && b<= 19.01)
     {
     System.out.println("Вы Водолей");
    }
else
     if(b>=20.02 && b<= 20.03)
     {
     System.out.println("Вы Рыбы");
     }
 
     {
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
13.12.2010, 12:40
ты пытаешься дату сравнить как числа: дата 21.03 идёт раньше чем 20.04, но число 21.03 больше 20.04

Заводи массив констан типа Date и работай с ними. + парсер нужно стринги в дату - сложнее, но правильнее.
1
0 / 0 / 2
Регистрация: 08.06.2010
Сообщений: 31
13.12.2010, 12:48  [ТС]
Цитата Сообщение от TanT Посмотреть сообщение
- сложнее, но правильнее.
я этого и боюсь, что сложнее, боюсь не справлюсь

Добавлено через 19 секунд
Спасибо парни)
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
13.12.2010, 13:00
ничего сложного, в настоящий момент логика просто неверна, if-ы не причём

примерно так, if-ы сам довернёшь

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
final SimpleDateFormat format = new SimpleDateFormat("dd.MM");
        try {
            final Date date03 = format.parse("21.03");
            final Date date04 = format.parse("20.04");
           
            System.out.print("март раньше апреля ");
            if (date03.before(date04)) {
                System.out.println("да");
            } else {
                System.out.println("нет");
            }
            
        } catch (final ParseException e) {
            e.printStackTrace();
        }
подробности по форматеру http://download.oracle.com/jav... ormat.html
2
10 / 10 / 0
Регистрация: 25.11.2010
Сообщений: 40
13.12.2010, 15:14
А зачем 12 ифоф??? А если бы знаков было 112, ты бы писал 112 ифоф... Изначально не правильно задана логика программы. Надо просто задать модель зодиаков, в нашем случае это будет масив из 12 елементов представляющие из себя зодиаки. Далее в зависимости от введённой дате мы итерируем по масиву и смотрим пренадлежит эта дата текущему зодиаку или нет, если да то печатаем и прерываем цикл... все

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package org.zodiak;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class ZodiakTest {
 
    enum Zodiak {
 
        OWEN("21.03", "20.04", "OWEN"),
        TELEC("21.04", "21.05", "TELEC"),
        BLIZNEC("22.05", "21.06", "BLIZNEC"),
        RAK("22.06", "22.07", "RAK"),
        LEO("23.07", "23.08", "LEO"),
        DIVA("24.08", "22.09", "DIVA"),
        VESI("23.09", "22.10", "VESI"),
        SCORPION("23.10", "21.11", "SCORPION"),
        STRELEC("22.11", "21.12", "STRELEC"),
        KOZEROG("22.11", "20.12", "KOZEROG"),
        VODOLEY("21.12", "19.01", "VODOLEY"),
        RIBI("20.02", "20.03", "RIBI");
 
        public String begin;
        public String end;
        public String name;
 
        Zodiak(String begin, String end, String name) {
            this.begin = begin;
            this.end = end;
            this.name = name;
        }
        
        final SimpleDateFormat formatter = new SimpleDateFormat("dd.MM");
        
        public boolean inDate(String date) throws ParseException {
            Date inDate = formatter.parse(date);
            Date bgn = formatter.parse(this.begin);
            Date end = formatter.parse(this.end);
 
            if ((inDate.after(bgn) && inDate.before(end)) || 
                    inDate.equals(bgn) || 
                    inDate.equals(end)) 
            {
                return true;
            } else {
                return false;
            }
        }
    }
 
    public static void main(String[] args) throws ParseException {
        
        // Пользователь вводит дату, например 11.08
        String date = "11.08";
        for (Zodiak z : Zodiak.values()) {
            if (z.inDate(date)) {
                System.out.println("YOU ARE: " + z.name);
                break;
            }
        }
 
    }
}
1
0 / 0 / 2
Регистрация: 08.06.2010
Сообщений: 31
13.12.2010, 21:51  [ТС]
andrewkjr, спасибо большое!
Прям незнаю как тебя отблагодарить)
TanT, спасибо, хороший вариант подогнал!
Dzhej-Dzhej, ты прав!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2010, 21:51
Помогаю со студенческими работами здесь

Как прописать путь к файлу в программе? Программа в Линукс среде
Добрый день. Долго не заморачиваясь, нашел что мне надо, однако... Мне надо указать нижеуказанный путь. Как? Спасибо. ...

Как соединять задачи в одной программе
как соединять задачи в турбо паскале, объясните кто знает и кто может, любая информация будет полезна, заранее спасибо

написать коментарии к программе и исправить ошибку в одной программе
и впрграмме mass нужно найти ошибку

Подскажите, как сделать несколько итераций в одной программе
суть такова: есть формула типа а=f(v,h)нужно, рассчитать несколько итераций по схеме a=f9v,h); v=a+v; h=a/2+v+h, но в той программе которую...

Как при нажатии кнопки в одной программе, запустить другую?
Как при нажатии кнопки в одной программе, запустить другую? Только не открыть вторую форму, а запустить другую программу.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru