Помощь в решении задачек javarush (до 10 уровня)
-
- Сообщения: 22
- Зарегистрирован: 22 окт 2016, 21:51
Re: Помощь в решении задачек javarush (до 10 уровня)
/* 10 процентов
Реализуйте метод addTenPercent, который увеличивает переданное целое число на 10%.
Исправьте ошибку в сигнатуре метода.
Подсказка: подумайте, какие у этого метода входные и выходные данные.
*/
public class Solution
{
public static void addTenPercent(int i) {
//напишите тут ваш код
}
public static void main(String[] args) {
System.out.println(addTenPercent(10));
}
}
Реализуйте метод addTenPercent, который увеличивает переданное целое число на 10%.
Исправьте ошибку в сигнатуре метода.
Подсказка: подумайте, какие у этого метода входные и выходные данные.
*/
public class Solution
{
public static void addTenPercent(int i) {
//напишите тут ваш код
}
public static void main(String[] args) {
System.out.println(addTenPercent(10));
}
}
- Maksim Sergeevich
- Администратор
- Сообщения: 200
- Зарегистрирован: 08 дек 2013, 21:19
- Откуда: Гусев
- Контактная информация:
Re: Помощь в решении задачек javarush (до 10 уровня)
/* Ближайшее к 10
Реализовать метод closeToTen. Метод должен выводить на экран ближайшее к 10 из двух чисел, записанных в аргументах метода.
Например, среди чисел 8 и 11 ближайшее к десяти 11. Если оба числа на равной длине к 10, то вывести на экран любое из них.
Подсказка: используйте метод public static int abs(int a), который возвращает абсолютную величину числа.
*/
Итак, есть метод main, который вызывает метод closeToten, в который мы уже передаём два каких-то значения в надежде получить результат.
public static void main(String[] args)
{
closeToTen(8,11);
closeToTen(14,7);
}
Давай подумаем, как мы вообще определяем, какое число ближе к десятке? 8 или 11, какое ближе? Да просто же. Десять минус 8. Десять минус 11. В первом случае получается 2 и во втором - 1.
Казалось бы осталось сравнить значения, НО!мы должны сравнить индексы значений, то есть игнорировать минус. Иначе решения будут не правильными. Для этого нам и нужен метод abs.
public static int abs(int a)
{
if (a < 0) {
return -a;
} else {
return a;
}
}
В него мы передаём значение (например минус 1). Если мы передали минус 1, какое значение будет в a? Ответ: - (-1), а минус на минус даёт плюс! Вот мы и сравним индексы без отрицательных знаков. Таким образом решение будет примерно таким:
public class Test2 {
public static void main(String[] args)
{
closeToTen(8,11);
closeToTen(14,7);
}
public static void closeToTen(int a, int b)
{
//::CODE:
int c = 10 - a;
int d = 10 - b;
if (abs(c) < abs(d)){
System.out.println(a);
} else {
System.out.println(b);
}
}
public static int abs(int a)
{
if (a < 0) {
return -a;
} else {
return a;
}
}
}
Реализовать метод closeToTen. Метод должен выводить на экран ближайшее к 10 из двух чисел, записанных в аргументах метода.
Например, среди чисел 8 и 11 ближайшее к десяти 11. Если оба числа на равной длине к 10, то вывести на экран любое из них.
Подсказка: используйте метод public static int abs(int a), который возвращает абсолютную величину числа.
*/
Итак, есть метод main, который вызывает метод closeToten, в который мы уже передаём два каких-то значения в надежде получить результат.
public static void main(String[] args)
{
closeToTen(8,11);
closeToTen(14,7);
}
Давай подумаем, как мы вообще определяем, какое число ближе к десятке? 8 или 11, какое ближе? Да просто же. Десять минус 8. Десять минус 11. В первом случае получается 2 и во втором - 1.
Казалось бы осталось сравнить значения, НО!мы должны сравнить индексы значений, то есть игнорировать минус. Иначе решения будут не правильными. Для этого нам и нужен метод abs.
public static int abs(int a)
{
if (a < 0) {
return -a;
} else {
return a;
}
}
В него мы передаём значение (например минус 1). Если мы передали минус 1, какое значение будет в a? Ответ: - (-1), а минус на минус даёт плюс! Вот мы и сравним индексы без отрицательных знаков. Таким образом решение будет примерно таким:
public class Test2 {
public static void main(String[] args)
{
closeToTen(8,11);
closeToTen(14,7);
}
public static void closeToTen(int a, int b)
{
//::CODE:
int c = 10 - a;
int d = 10 - b;
if (abs(c) < abs(d)){
System.out.println(a);
} else {
System.out.println(b);
}
}
public static int abs(int a)
{
if (a < 0) {
return -a;
} else {
return a;
}
}
}
"Вы считаете, что учитель слишком требователен? Подождите, когда станете начальником вы." Уильям Генри Гейтс III
- Maksim Sergeevich
- Администратор
- Сообщения: 200
- Зарегистрирован: 08 дек 2013, 21:19
- Откуда: Гусев
- Контактная информация:
Re: Помощь в решении задачек javarush (до 10 уровня)
По второй задаче отпишусь чуть позже - немного занят-с.
"Вы считаете, что учитель слишком требователен? Подождите, когда станете начальником вы." Уильям Генри Гейтс III
- Maksim Sergeevich
- Администратор
- Сообщения: 200
- Зарегистрирован: 08 дек 2013, 21:19
- Откуда: Гусев
- Контактная информация:
Re: Помощь в решении задачек javarush (до 10 уровня)
Что касается второй задачи:
/* 10 процентов
Реализуйте метод addTenPercent, который увеличивает переданное целое число на 10%.
Исправьте ошибку в сигнатуре метода.
Подсказка: подумайте, какие у этого метода входные и выходные данные.
*/
public class Solution
{
public static void addTenPercent(int i) {
//напишите тут ваш код
}
public static void main(String[] args) {
System.out.println(addTenPercent(10));
}
}
То есть существует метод main, который вызывает метод addTenPercent и передаёт ему какое-то числовое (int) значение, в нашем случае число 10.
Вспомним как узнать процент от числа? Нужный процент разделить на 100 и умножить на число.
То есть: 10 * 10 / 100 . Получится единица. Потом мы должны увеличить на 10 процентов. То есть эту единицу прибавить к 10. Как это будет выглядеть в методе addTenPercent(int i)? Очень просто.
int percent = i * 10 / 100;
i = i + percent;
Мы создали переменную percent типа int, которая равна значению, переданному в наш метод addTenPercent (то есть переменная i типа int) умноженное на значение, полученное от частного. Таким образом мы узнали 10 процентов от числа.
Далее переменная i равно значению самой себе плюс значение percent 10 процентов от числа.
Какая же ошибка в сигнатуре метода? Метод должен вернуть значение i. Значит в методе будет ключевое слово return. Стало быть вместо ключевого слово void - мы должны указать тип метода, в нашем случае int.
public static int addTenPercent(int i) {
//напишите тут ваш код
int percent = i * 10 / 100;
i = i + percent;
return i;
}
Полностью будет выглядеть как-то так:
public class Test2 {
public static int addTenPercent(int i) {
//напишите тут ваш код
int percent = i * 10 / 100;
i = i + percent;
return i;
}
public static void main(String[] args) {
System.out.println(addTenPercent(10));
}
}
/* 10 процентов
Реализуйте метод addTenPercent, который увеличивает переданное целое число на 10%.
Исправьте ошибку в сигнатуре метода.
Подсказка: подумайте, какие у этого метода входные и выходные данные.
*/
public class Solution
{
public static void addTenPercent(int i) {
//напишите тут ваш код
}
public static void main(String[] args) {
System.out.println(addTenPercent(10));
}
}
То есть существует метод main, который вызывает метод addTenPercent и передаёт ему какое-то числовое (int) значение, в нашем случае число 10.
Вспомним как узнать процент от числа? Нужный процент разделить на 100 и умножить на число.
То есть: 10 * 10 / 100 . Получится единица. Потом мы должны увеличить на 10 процентов. То есть эту единицу прибавить к 10. Как это будет выглядеть в методе addTenPercent(int i)? Очень просто.
int percent = i * 10 / 100;
i = i + percent;
Мы создали переменную percent типа int, которая равна значению, переданному в наш метод addTenPercent (то есть переменная i типа int) умноженное на значение, полученное от частного. Таким образом мы узнали 10 процентов от числа.
Далее переменная i равно значению самой себе плюс значение percent 10 процентов от числа.
Какая же ошибка в сигнатуре метода? Метод должен вернуть значение i. Значит в методе будет ключевое слово return. Стало быть вместо ключевого слово void - мы должны указать тип метода, в нашем случае int.
public static int addTenPercent(int i) {
//напишите тут ваш код
int percent = i * 10 / 100;
i = i + percent;
return i;
}
Полностью будет выглядеть как-то так:
public class Test2 {
public static int addTenPercent(int i) {
//напишите тут ваш код
int percent = i * 10 / 100;
i = i + percent;
return i;
}
public static void main(String[] args) {
System.out.println(addTenPercent(10));
}
}
"Вы считаете, что учитель слишком требователен? Подождите, когда станете начальником вы." Уильям Генри Гейтс III
-
- Сообщения: 22
- Зарегистрирован: 22 окт 2016, 21:51
Re: Помощь в решении задачек javarush (до 10 уровня)
package com.javarush.test.level04.lesson06.task03;
/* Сортировка трех чисел
Ввести с клавиатуры три числа, и вывести их в порядке убывания.
*/
import java.io.*;
public class Solution
{
public static void main(String[] args) throws Exception
{
//напишите тут ваш код
}
}
/* Сортировка трех чисел
Ввести с клавиатуры три числа, и вывести их в порядке убывания.
*/
import java.io.*;
public class Solution
{
public static void main(String[] args) throws Exception
{
//напишите тут ваш код
}
}
- Maksim Sergeevich
- Администратор
- Сообщения: 200
- Зарегистрирован: 08 дек 2013, 21:19
- Откуда: Гусев
- Контактная информация:
Re: Помощь в решении задачек javarush (до 10 уровня)
Для ввода данных с клавиатуры используется System.in. Но System.in позволяет считать с клавиатуры только коды символов. Чтобы обойти эту проблему и считывать большие порции данных за один раз, мы будем использовать более сложную конструкцию:
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
Чтобы считать строку с клавиатуры, можно использовать объект BufferedReader. Но для этого в него нужно передать объект, из которого он будет вычитывать данные – System.in.
Однако System.in и BufferedReader не совместимы друг с другом, поэтому следует использовать переходник – еще один объект InputStreamReader.
Проще можно записать так одной строкой:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Хорошо поток запущен, далее у нас три числа, которые мы должны ввести, создадим три переменных типа int (число) и укажем им значения, которые мы введём с клавиатуры, то есть:
int a = Integer.parseInt(reader.readLine());
int b = Integer.parseInt(reader.readLine());
int c = Integer.parseInt(reader.readLine());
А дальше простые условные циклы сравнений чисел - если а меньше б и меньше с, да ещё при этом б меньше c, то...
if (a < b && a < c && b < c) {
System.out.println(a);
System.out.println(b);
System.out.println(c);
} else if (b < a && b < c && a < c) {
System.out.println(b);
System.out.println(a);
System.out.println(c);
} else if (c < a && c < b && a < b){
System.out.println(c);
System.out.println(a);
System.out.println(b);
} else if (c < a && c < b && b < a){
System.out.println(c);
System.out.println(b);
System.out.println(a);
}
Таким образом весь код выглядеть будет как-то так:
package test2;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test2 {
public static void main(String[] args) throws Exception
{
//напишите тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(reader.readLine());
int b = Integer.parseInt(reader.readLine());
int c = Integer.parseInt(reader.readLine());
if (a < b && a < c && b < c) {
System.out.println(a);
System.out.println(b);
System.out.println(c);
} else if (b < a && b < c && a < c) {
System.out.println(b);
System.out.println(a);
System.out.println(c);
} else if (c < a && c < b && a < b){
System.out.println(c);
System.out.println(a);
System.out.println(b);
} else if (c < a && c < b && b < a){
System.out.println(c);
System.out.println(b);
System.out.println(a);
}
}
}
Про сайт напишу чуть позже, вчера в конторе одной просидел в качестве эксперта - не занимался, а сейчас над одной подработкой вкалываю.
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
Чтобы считать строку с клавиатуры, можно использовать объект BufferedReader. Но для этого в него нужно передать объект, из которого он будет вычитывать данные – System.in.
Однако System.in и BufferedReader не совместимы друг с другом, поэтому следует использовать переходник – еще один объект InputStreamReader.
Проще можно записать так одной строкой:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Хорошо поток запущен, далее у нас три числа, которые мы должны ввести, создадим три переменных типа int (число) и укажем им значения, которые мы введём с клавиатуры, то есть:
int a = Integer.parseInt(reader.readLine());
int b = Integer.parseInt(reader.readLine());
int c = Integer.parseInt(reader.readLine());
А дальше простые условные циклы сравнений чисел - если а меньше б и меньше с, да ещё при этом б меньше c, то...
if (a < b && a < c && b < c) {
System.out.println(a);
System.out.println(b);
System.out.println(c);
} else if (b < a && b < c && a < c) {
System.out.println(b);
System.out.println(a);
System.out.println(c);
} else if (c < a && c < b && a < b){
System.out.println(c);
System.out.println(a);
System.out.println(b);
} else if (c < a && c < b && b < a){
System.out.println(c);
System.out.println(b);
System.out.println(a);
}
Таким образом весь код выглядеть будет как-то так:
package test2;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test2 {
public static void main(String[] args) throws Exception
{
//напишите тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(reader.readLine());
int b = Integer.parseInt(reader.readLine());
int c = Integer.parseInt(reader.readLine());
if (a < b && a < c && b < c) {
System.out.println(a);
System.out.println(b);
System.out.println(c);
} else if (b < a && b < c && a < c) {
System.out.println(b);
System.out.println(a);
System.out.println(c);
} else if (c < a && c < b && a < b){
System.out.println(c);
System.out.println(a);
System.out.println(b);
} else if (c < a && c < b && b < a){
System.out.println(c);
System.out.println(b);
System.out.println(a);
}
}
}
Про сайт напишу чуть позже, вчера в конторе одной просидел в качестве эксперта - не занимался, а сейчас над одной подработкой вкалываю.
"Вы считаете, что учитель слишком требователен? Подождите, когда станете начальником вы." Уильям Генри Гейтс III
-
- Сообщения: 22
- Зарегистрирован: 22 окт 2016, 21:51
Re: Помощь в решении задачек javarush (до 10 уровня)
package com.javarush.test.level04.lesson04.task09;
/* Светофор
Работа светофора для пешеходов запрограммирована следующим образом: в начале каждого часа в течение трех минут горит зеленый сигнал,
затем в течение одной минуты — желтый, а потом в течение одной минуты — красный, затем опять зеленый горит три минуты и т. д.
Ввести с клавиатуры вещественное число t, означающее время в минутах, прошедшее с начала очередного часа.
Определить, сигнал какого цвета горит для пешеходов в этот момент.
Результат вывести на экран в следующем виде:
"зеленый" - если горит зеленый цвет, "желтый" - если горит желтый цвет, "красный" - если горит красный цвет.
Пример для числа 2.5:
зеленый
Пример для числа 3:
желтый
Пример для числа 4:
красный
Пример для числа 5:
зеленый
*/
import java.io.*;
public class Solution
{
public static void main(String[] args) throws Exception
{
/* Светофор
Работа светофора для пешеходов запрограммирована следующим образом: в начале каждого часа в течение трех минут горит зеленый сигнал,
затем в течение одной минуты — желтый, а потом в течение одной минуты — красный, затем опять зеленый горит три минуты и т. д.
Ввести с клавиатуры вещественное число t, означающее время в минутах, прошедшее с начала очередного часа.
Определить, сигнал какого цвета горит для пешеходов в этот момент.
Результат вывести на экран в следующем виде:
"зеленый" - если горит зеленый цвет, "желтый" - если горит желтый цвет, "красный" - если горит красный цвет.
Пример для числа 2.5:
зеленый
Пример для числа 3:
желтый
Пример для числа 4:
красный
Пример для числа 5:
зеленый
*/
import java.io.*;
public class Solution
{
public static void main(String[] args) throws Exception
{
- Maksim Sergeevich
- Администратор
- Сообщения: 200
- Зарегистрирован: 08 дек 2013, 21:19
- Откуда: Гусев
- Контактная информация:
Re: Помощь в решении задачек javarush (до 10 уровня)
Надо копать в сторону арифметического оператора %. % делит левый операнд на правый операнд и возвращает остаток. По остатку от деления можно найти в какой промежуток времени мы находимся... Чуть позже опишу решение. Занят пока.
"Вы считаете, что учитель слишком требователен? Подождите, когда станете начальником вы." Уильям Генри Гейтс III
- Maksim Sergeevich
- Администратор
- Сообщения: 200
- Зарегистрирован: 08 дек 2013, 21:19
- Откуда: Гусев
- Контактная информация:
Re: Помощь в решении задачек javarush (до 10 уровня)
Думаю как-то так. Подробнее мы сегодня обсудили на перемене. Но если есть вопросы - могу расписать.
public class Test2 {
public static void main(String[] args) throws Exception
{
//напишите тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
double time = Integer.parseInt(reader.readLine());
if((time%5>=0)&&(time%5<3))
System.out.println("зеленый");
if((time%5<4)&&(time%5>=3))
System.out.println("желтый");
if((time%5<5)&&(time%5>=4))
System.out.println("красный");
}
}
public class Test2 {
public static void main(String[] args) throws Exception
{
//напишите тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
double time = Integer.parseInt(reader.readLine());
if((time%5>=0)&&(time%5<3))
System.out.println("зеленый");
if((time%5<4)&&(time%5>=3))
System.out.println("желтый");
if((time%5<5)&&(time%5>=4))
System.out.println("красный");
}
}
"Вы считаете, что учитель слишком требователен? Подождите, когда станете начальником вы." Уильям Генри Гейтс III
-
- Сообщения: 22
- Зарегистрирован: 22 окт 2016, 21:51
Re: Помощь в решении задачек javarush (до 10 уровня)
С наступающим Новым Годом.Удачи здоровья