0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 34
1

Не могу понять как написать меню выбора задач

14.10.2018, 12:22. Показов 3226. Ответов 16

Здравствуйте!
Cуть вопроса такова:
Мне нужно написать менюшку, через которую необходимо выбирать номер задачи и выводить соответствующую номеру задачу на экран. Всего задач 10. Каждая задача находится в отдельном методе типа void. все методы соответственно находятся в классе. В задании к менюшке сказано, что она работает с помощью операторов case, break. И находится в отдельном классе. И должна выдавать что-то вроде этого: "Выберите задачу:" и будет столбец из 10 цифр, при вводе с клавиатуры соответствующей цифры на экран выводится соответствующая задача, выполняется, и затем идет возврат к первоначальной менюшке, с выбором номера задачи. Все задачи я уже сделал, а меню никак не могу сообразить.

Вот пример кода только с 2 задачами, как к ним написать подобное меню?:

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
import java.util.Scanner;
public class Var25 {
    Scanner obv=new Scanner(System.in);
    void V1()
    {
        System.out.println("Задача 37");
        double x,y,z;
        do
        {
            System.out.print("\n x=");
            x=obv.nextDouble();
            if (x<=0)
            {
                System.out.println("Не является областью определения функции");
                break;
            }
            z=(x+12/x);
            y=Math.log(z);
            
            x++;
        System.out.println("y="+y);
        } while (true);
    }
    
    void V2()
    {
        System.out.println("Задача 42");
        double x,y,A;
        System.out.print("\n A=");
        A=obv.nextDouble();
        for(x=-2; x<=8; x+=0.75)
        {
            y=(4*x-3*x+Math.cos(x))/A;
            System.out.println("y(" +x+")=" +y);
        }
    }
    public static void main(String[] args) {
        Var25 mob=new Var25();
        mob.V1();
        mob.V2();
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2018, 12:22
Ответы с готовыми решениями:

создал форму для выбора некоторых данных по checkbox не могу понять как написать, вывод инфы
&lt;h1&gt; Поиск рецепта по составляющим ингридиентам&lt;/h1&gt; &lt;form method=&quot;post&quot; name=&quot;ProductForm&quot;...

Не могу понять как правильнее увеличить отступ между пунктами меню
Доброго времени суток! Подскажите, можно ли в css задать какой-нибудь параметр в блоке id=menu...

Не могу понять как написать
Доброго времени суток. Не мог бы кто помочь в написании программ: 1. Определить имеет ли...

Решение задач в Delphi/ Не могу понять, как исправить эту ошибку(Задание. Точно два числа положительные с asm)
procedure TForm1.Button1Click(Sender: TObject); var a,b,c,d,s, mass,n :integer ; begin...

16
Йуный падаван
Эксперт PythonЭксперт Java
13124 / 7556 / 2364
Регистрация: 21.10.2017
Сообщений: 18,686
14.10.2018, 12:39 2
Лучший ответ Сообщение было отмечено Crotus как решение

Решение

Crotus, методы с маленькой буквы называй.
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
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Input 'q' for exit");
        String option = "";
        int choose;
        Var25 quests = new Var25();
 
        while (!option.equals("q")) {
            System.out.println("Введите номер задачи (1-20)");
            option = scan.next();
            choose = Integer.parseInt(option);
           
            switch (choose) {
                case 1:
                    quests.V1();
                    break;
                case 2:
                    quests.V2();
                    break;
                case 3:
                    quests.V3();
                    break;
// etc...
                default:
                    System.out.println("Нет такой задачи!");
            }
         }
      System.out.println("Bye!");
 
    }
1
526 / 262 / 69
Регистрация: 11.12.2016
Сообщений: 1,223
14.10.2018, 12:49 3
Crotus, У вас же в условию написано
Цитата Сообщение от Crotus Посмотреть сообщение
В задании к менюшке сказано, что она работает с помощью операторов case, break.
Ну как бы логично использовать оператор switch(). Его и используйте.

Добавлено через 7 минут
iSmokeJC, В свитч можно впихивать стринг, так не будет ошибок парсинга.
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 34
14.10.2018, 13:04  [ТС] 4
Спасибо, а как теперь связать эту менюшку с теми двумя задачами, которые я привел выше? Т.е. чтобы они были в одной программе?
0
2324 / 1828 / 467
Регистрация: 17.02.2014
Сообщений: 8,937
14.10.2018, 13:04 5
Цитата Сообщение от ViktorFX Посмотреть сообщение
не будет ошибок
думается, ты не по делу изрек эти строки т.к. в этом коде многое далеко не идеально.
1
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 34
14.10.2018, 13:10  [ТС] 6
Я понимаю что нужно использовать Switch Case, но не могу понять как это реализовать в связке с выбором задач. Т.е. у меня должно быть два класса, в первом классе задачи каждая в своем методе, во втором классе меню с выбором задач из первого класса.
0
Йуный падаван
Эксперт PythonЭксперт Java
13124 / 7556 / 2364
Регистрация: 21.10.2017
Сообщений: 18,686
14.10.2018, 13:15 7
Crotus, ну так а я тебе что сделал???

Добавлено через 52 секунды
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Var25 quests = new Var25();
Вот создается объект класса, в котором лежат задачи!
0
2324 / 1828 / 467
Регистрация: 17.02.2014
Сообщений: 8,937
14.10.2018, 13:15 8
Цитата Сообщение от Crotus Посмотреть сообщение
как это реализовать в связке с выбором задач
подсказка из зала while (!option.equals("q")) зачем нужна?
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 34
14.10.2018, 13:20  [ТС] 9
Я создал для кода менюшки второй класс и менюшка не срабатывает. Я поэтому и не совсем понимаю как их связать. К тому же я как новичок не совсем понимаю эти записи: !option.equals("q") ; String option = ""; option = scan.next(); choose = Integer.parseInt(option); int choose; Можно ли его еще упростить?
0
526 / 262 / 69
Регистрация: 11.12.2016
Сообщений: 1,223
14.10.2018, 13:24 10
Aviz__, не спорю, просто на форуме я не боюсь ошибится, участвовать в темах которые на 100% не знаю, пробовать и предлагать что-то новое. И даже наоборот, скажу спасибо если показывают в чем ошибался.
В реальном коде я бы руководствувался "не трогай если работает"
0
Йуный падаван
Эксперт PythonЭксперт Java
13124 / 7556 / 2364
Регистрация: 21.10.2017
Сообщений: 18,686
14.10.2018, 13:25 11
Crotus, почитал бы ты что-нибудь...
Java
1
public static void main(String[] args) {
Вот это - точка входа в программу. Т.е. этот метод выполняется при запуске. Соответственно, внутри него нужно каким-то образом вызвать твое меню. Или создать объект класса с меню и обратиться к его методу, или просто вызвать метод этого класса (если он статический ессно).

Добавлено через 1 минуту
Цитата Сообщение от ViktorFX Посмотреть сообщение
"не трогай если работает"
Очень даже зря. Эксперимент - одна из основ познания.
0
526 / 262 / 69
Регистрация: 11.12.2016
Сообщений: 1,223
14.10.2018, 13:32 12
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Очень даже зря. Эксперимент - одна из основ познания.
Я вчера сидел в Иерархия классов "познавал" на ночь. Аж стыдно
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 34
14.10.2018, 14:02  [ТС] 13
Еще раз извиняюсь, а можно ли класс с меню представить в таком варианте? Только у меня всеравно он не работает, и как запихать сюда ввод q для выхода?
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
class menu
{
    Scanner obv=new Scanner(System.in);
    void Z(){
            System.out.println("Введите 'q' for exit");
            PZ2 mob = new PZ2();
     
            
                System.out.println("Введите номер задачи (1-10)");
                
                for(int v = 1; v==10; v++){
                switch (v) {
                    case 1:
                        mob.V1();
                        break;
                    case 2:
                        mob.V2();
                        break;
                    case 3:
                        mob.V3();
                        break;
                    case 4:
                        mob.V4();
                        break;
                    case 5:
                        mob.V5();
                        break;
                    case 6:
                        mob.V6();
                        break;
                    case 7:
                        mob.V7();
                        break;
                    case 8:
                        mob.V8();
                        break;
                    case 9:
                        mob.V9();
                        break;
                    case 10:
                        mob.V10();
                        break;
                    default:
                        System.out.println("Нет такой задачи!");
                }
             }
        }
}
0
Йуный падаван
Эксперт PythonЭксперт Java
13124 / 7556 / 2364
Регистрация: 21.10.2017
Сообщений: 18,686
14.10.2018, 14:16 14
Лучший ответ Сообщение было отмечено Crotus как решение

Решение

Crotus, мануал:
1. Создаешь в IDE новый класс, пусть будет Menu
2. Копипастишь в него приведенный мной выше код
3. Переименовываешь
Java
1
public static void main(String[] args) {
в
Java
1
public void showMenu() {
4. Создаешь класс со своими задачами
5. В основном классе пишешь
Java
1
2
3
public static void main(String[] args) {
   new Menu().showMenu();
}
6. Профит
1
2324 / 1828 / 467
Регистрация: 17.02.2014
Сообщений: 8,937
14.10.2018, 14:17 15
Цитата Сообщение от ViktorFX Посмотреть сообщение
в чем ошибался
тут не в ошибке дело, Бро)). В программировании есть много путей решения. Если ты заметил, то старожилы форума пишут свой вариант решения и подписывают "как вариант". Просто, когда они в 2145 раз смотрели на задачу им пришло такое решение, которое не лучшее, может быть...
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 34
14.10.2018, 14:28  [ТС] 16
Все, заработало, спасибо за вашу помощь, но я всеравно не до конца пойму, как работает ваш код, вы можете пояснить эти строки: 4, 8(кроме while), 10 ,11. Я не сталкивался с этими типами данных, которые вы используете, и к примеру, есть ли им альтернатива?
0
Йуный падаван
Эксперт PythonЭксперт Java
13124 / 7556 / 2364
Регистрация: 21.10.2017
Сообщений: 18,686
14.10.2018, 14:52 17
Лучший ответ Сообщение было отмечено Crotus как решение

Решение

Crotus, на счет
Цитата Сообщение от iSmokeJC Посмотреть сообщение
option.equals("q")
Почитай https://www.cyberforum.ru/java... 15430.html

Цитата Сообщение от iSmokeJC Посмотреть сообщение
Integer.parseInt(option)
Здесь строка преобразуется в число. Как писал
Цитата Сообщение от ViktorFX Посмотреть сообщение
В свитч можно впихивать стринг, так не будет ошибок парсинга
,
можно обойтись и без этого. Т.е. в свич поместить переменную option и в case писАть - "1", "2", и т.д. (в кавычках!)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2018, 14:52
Помогаю со студенческими работами здесь

Не могу понять как написать правильно.
Не могу понять как это написать правильно. Оно даже не компилируется. #include&lt;iostream&gt;...

Как написать параллакс панораму не могу понять
https://vr.google.com/daydream/ как делать паралакс я понимаю Но как написать паралакс панораму...

Не могу понять как написать каскадную рекурсию
Для заданного одномерного массива A из N элементов найти значение минимального элемента массива и...

Теория вероятностей. Не могу понять как написать на С++
Определить вероятность того, что в семье имеющей 6 детей не больше 4 девочек. Веpоятность...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru