похоже я запарился и следует повторить 2 уровень.. вопрос по коду, логика у меня была такая: я вызвал 2 раза метод convertEurToUsd (как я думаю, что вызвал) в методе main с конкретными значениями. эти значения ушли в метод convertEurToUsd, там я ввёл новую переменную usd, присвоил формулу и вернул полученное значение в main... почему это не работает?))
public class Solution {
public static void main(String[] args) {
convertEurToUsd(1, 3);
convertEurToUsd(1, 5);
System.out.println(usd);
//напишите тут ваш код
}
public static double convertEurToUsd(int eur, double course) {
double usd = eur * course;
return usd;
//напишите тут ваш код
}
}
Александр
11 уровень
помогите разобраться с кодом..
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
19 февраля 2020, 19:36
Потому что переменная, объявленная в каком-то методе, существует только внутри этого метода и больше нигде недоступна.
Зато твой метод convertEurToUsd возвращает какое-то значение, а ты его никак не используешь.
0
Александр
20 февраля 2020, 03:25
правильно ли я понял, что переменную, указанную в одном методе, я не могу никак передать/вызвать в другой метод? т.е. даже если я объявлю переменную usd в методе main и в методе convertEurToUsd напишу:
usd = eur*...;
return usd;,
тоже ничего не произойдёт? для того, чтоб это "взлетело", нужно переменную usd вынести за пределы методов и объявить для всего класса? :) есть конечно решение проще, которое нашёл... но вариантов решения много и мне хотелось бы своё "допилить")
0
ГоффMaster
20 февраля 2020, 03:35
Грубо говоря, надо смотреть на фигурные скобки
объявляем переменную а
неважно что {
объявляется переменная бе
всё что угодно
переменная бе есть, и а есть }
а вот здесь переменной бе уже нет, а переменная а есть
+1
ГоффMaster
20 февраля 2020, 03:46
"переменную, указанную в одном методе, я не могу никак передать/вызвать в другой метод" - сложный вопрос. В том смысле, который ты подразумеваешь - нет, не можешь. Ты можешь перекинуть значение переменной в виде параметров при вызове или ретурном при выхоже. Но ещё бывают ссылочные переменные, которые хранят не значение, а ссылку - там всё сложнее. Ещё бывают статические переменные, с ними тоже немного по другому.
0
ГоффMaster
20 февраля 2020, 03:49
В main нет переменной usd, поэтому System.out.println(usd); не работает
0
Александр
20 февраля 2020, 04:50
я то как думал, программа зашла в main и видит обращение к методу convert..., в котором я объявляю переменную usd, провожу какие-то вычисления, получаю какое-то значение и возвращаю.. и тут, видимо, я сам себя обманул, решив, что возвращается не только значение, но и переменная, которой присвоено это значение) поэтому без зазрения совести указал в main вывод usd, т.к. думал, программа возвращает эту переменную) ладно, повторение мать учения, пройдусь, пожалуй, ещё раз по теории, для закрепления..
0
Ksenia Volkova Java Developer в DXC Master
20 февраля 2020, 06:27
Твой метод возвращает значение - зачем? Затем, чтобы ты им мог воспользоваться там, где это тебе нужно.
А то, что саму переменную из другого метода ты получить не можешь - так это как раз и хорошо. Иначе была бы жуткая путаница. Ведь ты когда вызываешь метод, можешь не знать, какие там переменные используются.
Вот вызвал ты, допустим, System.out.println(). А потом тебе понадобилась создать переменную x. А компилятор тебе и говорит - нееет, такая переменная уже есть, в методе println()...
В программах могут вызываться десятки и сотни методов, и невозможно было бы следить, где какая переменная используется.
А так ты можешь в каждом отдельном блоке кода называть переменные так, как тебя будет удобно и понято - и они не будут друг с другом конфликтовать.
+1
ГоффMaster
20 февраля 2020, 14:18
Да, ты возвращаешь значение, которое в данном случае хранится внутри метода в переменной usd. И это значение подставлется в main туда, где ты метод вызываешь. Сейчас у тебя строка convertEurToUsd(1, 3); ничего не делает - метод вызывается, параметры передаются, вычисление производится, результат возвращается - и всё. Ничего дальше с возвращённым значением не происходит, а по-хорошему, его надо вывести в консоль.
0