Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/55: Рейтинг темы: голосов - 55, средняя оценка - 4.78
2 / 1 / 1
Регистрация: 12.10.2016
Сообщений: 102
1

Ошибка cannot find symbol

27.08.2017, 16:19. Показов 10792. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В программе "каталог спиртных напитков" возникает 5 ошибок cannot find symbol. В методе print(). О напитке хранится наименоваение, тип, процент спирта, объем и цена за бутылку.
Скажте пожалуйста что не так

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
103
104
105
106
107
108
109
110
111
112
113
114
import java.util.*;
 
public class Catalog
{
    static ArrayList<Drink> drink = new ArrayList<Drink>();
    static Scanner in = new Scanner (System.in);
    public static void main (String[] args)
    {
        while (true)
        {
            System.out.println("Ввыберите действие");
            System.out.println("");
            System.out.println("1-Вывод каталога на экран");
            System.out.println("2-Добавление элемента");
            System.out.println("");
            int choose = in.nextInt();
            switch (choose)
            {
                case 1:
                    print();
                break;
                case 2:
                    add();
                break;
                default: System.out.println("Сделайте ваш выбор");
            }
        }
    }
     public static void print()
    {
        for(int i=0; i<drink.size(); i++)
        {
            System.out.println(name+" "+type+" "+ alcohol+" "+v+" "+price);
        }
    }
    public static void add()
    {
        System.out.println("Введите наименование");
        String name = in.next();
        System.out.println("Введите тип");
        String type = in.next();
        System.out.println("Введите содержание спирта");
        double alcohol = in.nextDouble();
        System.out.println("Введите объем бутылки");
        double v = in.nextDouble();
        System.out.println("Введите цену за бутылку");
        double price = in.nextDouble();
    }
    
}          
                    
class Drink
{
    public String name;
    public String type;
    public double alcohol;
    public double v;
    public double price;
    public Drink(String name, String type, double alcohol, double v, double price)
    {
        this.name = name;
        this.type = type; 
        this.alcohol = alcohol;
        this.v = v;
        this.price = price;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getType()
    {
        return type;
    }
    public void setType(String type)
    {
        this.type = type;
    }
    public double getAlcohol()
    {
        return alcohol;
    }
    public void setAlcohol(double alcohol)
    {
        this.alcohol = alcohol;
    }
    public double getV()
    {
        return v;
    }
    public void setV(double v)
    {
        this.v = v;
    }
    public double getPrice()
    {
        return price;
    }
    public void setPrice(double price)
    {
        this.price = price;
    }
    
    @Override
    public String toString()
    {
        return name+type+alcohol+v+price;
    }
     
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2017, 16:19
Ответы с готовыми решениями:

Ошибка: cannot find symbol symbol: class toString location: class java.util.Date
import java.util.Date; import java.lang.String; import java.io.*; public class Sword { public static void main(String args)...

Ошибка cannot find symbol
Не могу разобраться, как исправить данную ошибку. Пытаюсь скомпилировать данный код (копипаст из интернета) из командной строки: ...

Ошибка компиляции cannot find symbol
При компиляции ошибка: D:\LinageII\gameserver\src\main\java\l2p\gameserver\model\Player.java:4339: cannot find symbol symbol :...

5
7 / 8 / 2
Регистрация: 22.06.2017
Сообщений: 30
27.08.2017, 16:45 2
Ну конечно! Откуда методу print знать о переменных метода add?))Почитайте о полях класса и сделайте name , type и т.д. статическими полями...

Добавлено через 16 минут
Вот вам подробный ответ:


Итак:
1) У вас есть два класса catalog и drink
2) В классе каталога есть несколько статических методов;
3) класс каталог подразумевает управление созданными напитками
4)класс drink инкапсулирует алкогольный напиток



О чем вы не знаете:
1) статические методы не имеют информацию а нестатических переменнвх и методах, имейте это ввиду;
2)нестатические переменные не существуют, пока вы не создадите обьект : что это значит?
Представьте себе темный сосуд с напитком(без надписей), пока вы не инициализаруете, тобишь не нальете напиток, вы не знаете , Что это за напиток...
3)Переменные метода - методы могут иметь внутри себя вспомогательные переменные...


В чем основная ошибка:
в методе add() вы создаете те самые вспомогательные переменные , о которых не известно ничего за пределами add().(та же ошибка в print).



Что стоит почитать:
1)О полях класса;
2) О сокрытии переменной;
3) О модификаторах доступа
4) О разнице статических и нестатических членов класса
1
2 / 1 / 1
Регистрация: 12.10.2016
Сообщений: 102
27.08.2017, 18:55  [ТС] 3
А теперь ничего не выводится на консоль
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import java.util.*;
 
public class Catalog
{
   
    static Scanner in = new Scanner (System.in);
    static String name;
    static String type;
    static double alcohol;
    static double v;
    static double price;
    static ArrayList<Drink> drink = new ArrayList<Drink>();
    public static void main (String[] args)
    {
       ArrayList<Drink> drink = new ArrayList<Drink>(); 
        while (true)
        {
            System.out.println("Ввыберите действие");
            System.out.println("");
            System.out.println("1-Вывод каталога на экран");
            System.out.println("2-Добавление элемента");
            System.out.println("");
            int choose = in.nextInt();
            switch (choose)
            {
                case 1:
                    print();
                break;
                case 2:
                    add();
                break;
                default: System.out.println("Сделайте ваш выбор"); break;
            }
        }
    }
    public static void print()
    {
        for (int i=0; i<drink.size(); i++)
            System.out.println(name+type+alcohol+v+price);
    }
    public static void add()
    {
        System.out.println("Введите наименование");
        name = in.next();
        System.out.println("Введите тип");
        type = in.next();
        System.out.println("Введите содержание спирта");
        alcohol = in.nextDouble();
        System.out.println("Введите объем бутылки");
        v = in.nextDouble();
        System.out.println("Введите цену за бутылку");
        price = in.nextDouble();
        
    }
}     
         
                    
class Drink
{
   public String name;
    public String type;
    public double alcohol;
    public double v;
    public double price;
    public Drink(String name, String type, double alcohol, double v, double price)
    {
       this.name = name;
      this.type = type; 
      this.alcohol = alcohol;
    this.v = v;
     this.price = price;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getType()
    {
        return type;
    }
    public void setType(String type)
    {
        this.type = type;
    }
    public double getAlcohol()
    {
        return alcohol;
    }
    public void setAlcohol(double alcohol)
    {
        this.alcohol = alcohol;
    }
    public double getV()
    {
        return v;
    }
    public void setV(double v)
    {
        this.v = v;
    }
    public double getPrice()
    {
        return price;
    }
    public void setPrice(double price)
    {
        this.price = price;
    }
    
    @Override
    public String toString()
    {
        return name+type+alcohol+v+price;
    }
     
}
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
27.08.2017, 19:03 4
Потому что в ArrayList ничего не добавляете. 15-ую строку удалить, 29-31 переписать:
Java Скопировано
1
2
3
4
case 2:
   add();
   drink.add(new Drink(name, type, alcohol, v, price));
break;
1
7 / 8 / 2
Регистрация: 22.06.2017
Сообщений: 30
27.08.2017, 19:06 5
focusherad, надо так :
Метод print
Java Скопировано
1
2
3
4
static void print(index i){
System.out.println(drink.get(i));
 
}
Метод add
Java Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static void add(){
 
System.out.println("Введите наименование");
        name = in.next();
        System.out.println("Введите тип");
        type = in.next();
        System.out.println("Введите содержание спирта");
        alcohol = in.nextDouble();
        System.out.println("Введите объем бутылки");
        v = in.nextDouble();
        System.out.println("Введите цену за бутылку");
        price = in.nextDouble();
Drink mydrink = new Drink(name,type,alcohol,v,price);
drink.add(mydrink);
}
Это убрать из кода:
Java Скопировано
1
2
3
4
5
static String name;
    static String type;
    static double alcohol;
    static double v;
    static double price;
Код далек от идеального, зато работает, не так ли?)...
0
2 / 1 / 1
Регистрация: 12.10.2016
Сообщений: 102
27.08.2017, 19:09  [ТС] 6
Спасибо вам большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2017, 19:09
Помогаю со студенческими работами здесь

Ошибка java:13: error: cannot find symbol
int x, dig1, dig2; x=reader.nextInt(); dig1=x/35; dig2=x%35; System.out.print(&quot;Число полных классов=&quot;+dig1); ...

Непонятная ошибка - cannot find symbol: variable Path
import java.util.Scanner; public class deleteMe { public static void main(String args) throws Exception { Scanner...

Cannot find symbol
Здравствуйте! Не могу понять в чем ошибка. import java.util.*; class Fibonacci { public static void main(String args) { ...

Cannot find symbol
import java.util.Scanner; class HelloWorld{ public static void main(String args){ Scanner in = new Scanner (System.in); ...

Error: cannot find symbol
Потихонечку играюсь в java. Написал класс прямоугольник. И вроде бы все нормально, но javac выдает мне ошибки hell.java:54: error: cannot...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Временные зоны и std::chrono в C++
Wired 1 23.02.2025
Библиотека chrono в C++20 построена на основе базы данных часовых поясов IANA (также известной как "база данных tz" или "zoneinfo"), которая является признанным стандартом для информации о временных. . .
Как устроен std::expected в C++23
Wired 2 23.02.2025
В любом языке программирования одной из ключевых проблем остается обработка ошибок и возвращение результатов из функций. Появление std::expected в C++23 предлагает удобное решение, позволяющее. . .
Монадические расширения std::expected в C++
Wired 3 23.02.2025
Тип std::expected, появившийся в C++23, предоставляет возможности для работы с операциями, которые могут завершиться как успешно, так и с ошибкой. Однако его истинная сила раскрывается через. . .
Упрощение кода с помощью if constexpr и концепций в C++17 и C++20
Wired 4 23.02.2025
Разработка сложных программных систем на C++ нередко требует гибкости в отношении компиляции различных участков кода в зависимости от определенных условий. До появления современных возможностей языка. . .
20 способов инициализироват­ь строку в C++
Wired 5 23.02.2025
Давайте разберем основные методы инициализации std::string в C++ и рассмотрим их особенности, преимущества и потенциальные подводные камни. Начнем с самого простого - создания пустой строки. В C++. . .
const vs consteval vs constexpr vs constinit в C++20
Wired 1 23.02.2025
const используется для обозначения неизменяемости в C++. Когда мы объявляем переменную как константу, мы даем компилятору и другим разработчикам четкий сигнал - значение этой переменной не должно. . .
Рисование таблиц с std::format в C++20
Wired 2 23.02.2025
Основной синтаксис форматирования C++ использует фигурные скобки как заполнители, внутри которых можно указывать различные параметры форматирования. Простейшая форма выглядит как std::format("{}"),. . .
Диапазоны в C++20: Композиция алгоритмов
Wired 3 23.02.2025
В своей основе диапазон - это обобщение пары итераторов, задающих начало и конец последовательности элементов. Однако такое простое определение скрывает за собой революционные возможности для. . .
Ranges View и View Adaptor в C++20 и C++23
Wired 4 23.02.2025
Появление концепции Ranges и Views в C++ стало значительным шагом вперёд в работе с последовательностями данных. Views представляют собой легковесные объекты, которые позволяют манипулировать данными. . .
Умные указатели и динамические массивы в C++
Wired 5 23.02.2025
Работа с динамической памятью в C++ всегда была источником множества проблем и ошибок. Традиционное управление памятью через обычные указатели требует особой внимательности - программист должен не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер