{
int x100,x10,x1,s;
x100=x/100;
x10=(x/10)%10;
x1=x%10;
s=x100*x100+x1*x1;
return s;
}
}
Разберем с подробными объяснениями новый вариант решения.
class primer_method1 { | Заголовок класса и открывающая тело класса фигурная скобка остались на месте, без изменений |
public static void main(String[]args) { | Заголовок главного метода и открывающая тело главного метода фигурная скобка остались на месте, без изменений |
int x2,s2; | Изменился список переменных, которые используются в главном методе, поскольку часть переменных ушла в отдельный метод (об этом – ниже). |
for (int x=100; x<=999; x++) { | Заголовок цикла и открывающая тело цикла фигурная скобка остались на месте, без изменений |
x2=(x/10)%10; s2=x2*x2; | В теле цикла используется переменная х2, в которую заносится вторая цифра числа (число десятков), и переменнаяs2, в которую заносится квадрат этой второй цифры |
if (s2==s1(x)) System.out.print(x+" "); | Очень важно: в команде выбора сравнивается переменная s2 с "чем-то", что фактически не существует(!) в главном методе: s1(x)… Как в этом случае поступает Java? Начинает проверять класс, есть ли в какой-то его части упоминание о "чем-то", что называется s1. В нашем случае сразу за главным методом, в продолжении класса обнаруживается блок, который действительно так называется. |
} | Скобка, закрывающая цикл |
} | Скобка, закрывающая тело главного метода |
public static int s1(int x) | Вот он, блок, который называется s1! На языке Java такие блоки называются методами. Любой метод (в том числе и наш, s1), как и главный метод, имеет заголовок и тело. Заголовок содержит служебные слова static public, после которых указывается тип значения, который этот метод вернет "туда, откуда его вызвали". Поскольку в нашем случае вызов состоялся из команды выбора, то и возвращаться значение будет в главный метод, в условие команды выбора. После типа метода записывается его название (s1 – в нашем случае). За названием, в круглых скобках, указывается список параметров, которые получает метод из "точки вызова". Вернитесь к команде выбора и обратите внимание, что в условии метод s1 вызывается так, что во время вызова ему посылается значение переменной х. Если метод получает несколько параметров, все они записываются в заголовке метода со своими типами и именами. |
{ | Скобка, открывающая тело метода |
int x100,x10,x1,s; x100=x/100; x10=(x/10)%10; x1=x%10; s=x100*x100+x1*x1; | В теле метода мы записали те переменные и команды, которые используются для определения первой и последней цифр, а также для вычисления суммы их квадратов |
return s; | Поскольку наш метод должен возвращать "туда, откуда его выззвали" (в нашем случае – в условие команды выбора, расположенной в теле главного метода) значение, в методе обязательно должна быть команда return, после которой указывается переменная, возвращающая значение. Очень важно: тип этой переменной и тип метода должны совпадать! |
} | Скобка, закрывающая тело метода s1 |
} | Скобка, закрывающая тело класса |