• ,

Помогите понять!

Добрый вечер! Прошу помощи в разъяснении, что делает программа на каждом шаге? Если кто может прошу обьяснить. Спасибо!

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/

public class Solution
{
public static void main(String[] args) throws Exception
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int number = Integer.parseInt(reader.readLine());
int max;
int digi;

if (number >0){
max = Integer.parseInt(reader.readLine());

for (int i = 1;i<number;i++){
digi = Integer.parseInt(reader.readLine());

if (digi>max){
max = digi;
}
}
System.out.println(max);
}

}

}
  • ,

Помогите понять!

Добрый вечер! Прошу помощи в разъяснении, что делает программа на каждом шаге? Если кто может прошу обьяснить. Спасибо!

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/

public class Solution
{
public static void main(String[] args) throws Exception
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int number = Integer.parseInt(reader.readLine());
int max;
int digi;

if (number >0){
max = Integer.parseInt(reader.readLine());

for (int i = 1;i<number;i++){
digi = Integer.parseInt(reader.readLine());

if (digi>max){
max = digi;
}
}
System.out.println(max);
}

}

}

level14.lesson08.home10, не понимаю блок кода, проверку прошел успешно.

private void processCastedObjects(Listlist){
for (Number object: list)
{
//Исправь 2 ошибки
if (object instanceof Float)
{
Float a = (Float) object;
System.out.println(«Is float value defined? » + a.isNaN());
} else if (object instanceof Double)
{
Double a = (Double) object;
System.out.println(«Is double value infinite? » + a.isInfinite());
}
}
}

Зачем объект типа Double приводить к типу Double?)
  • ,

level34.lesson15.big01 Задание 10

В игре будет несколько уровней, все уровни будут храниться в текстовом файле. Сейчас мы напишем тестовую реализацию загрузчика уровней LevelLoader. Почему тестовую? Полный функционал нам пока не нужен, он довольно сложный, оставим его на потом. А пока: 10.1. Создай класс LevelLoader в пакете model. 10.2. Добавь в класс конструктор, принимающий Path levels. Параметр levels – это путь к тестовому файлу, содержащему описание уровней. 10.3. Добавь в класс LevelLoader метод GameObjects getLevel(int level). Пока не важно, что будет возвращать этот метод. Пусть он всегда возвращает набор из: одного игрока, одного дома, одного ящика и нескольких стен. Так будет проще отладить работу игры. Координаты каждого объекта должны быть не нулевые и кратны половине FIELD_SELL_SIZE (центр каждого объекта должен быть в середине ячейки поля).

import java.nio.file.Path;
import java.util.HashSet;
import java.util.Set;
public class LevelLoader {
    private Path levels;
    public LevelLoader(Path levels) {
        this.levels = levels;
    }
    public GameObjects getLevel(int level) {
        Set<Wall> walls = new HashSet<>();
        Set<Box> boxes = new HashSet<>();
        Set<Home> homes = new HashSet<>();
        Player player;
        walls.add(new Wall(200, 200));
        walls.add(new Wall(240, 240));
        walls.add(new Wall(280, 280));
        boxes.add(new Box(160, 160));
        homes.add(new Home(300, 300));
        player = new Player(100, 100);
        return new GameObjects(walls, boxes, homes, player);
    }
}


Я не пойму почему не проходит? Я уже перечитал тему тоже с обсуждением этого задания и все советы, что там были перепробовал — безрезультатно. Написано «Координаты каждого объекта должны быть не нулевые и кратны половине FIELD_SELL_SIZE». FIELD_SELL_SIZE у нас 20, половина — 10. Значит любое число с нулем кратное половине FIELD_SELL_SIZE. Подскажите куда обратить внимание.

level18.lesson10.home10. Помогите пожалуйста, не проходит тест

package com.javarush.test.level18.lesson10.home10;
Собираем файл из кусочков
Считывать с консоли имена файлов
Каждый файл имеет имя: [someName].partN. Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37.
Имена файлов подаются в произвольном порядке. Ввод заканчивается словом «end»
В папке, где находятся все прочтенные файлы, создать файл без приставки [.partN]. Например, Lion.avi
В него переписать все байты из файлов-частей используя буфер.
Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, ..., в конце — последнюю.
Закрыть потоки. Не использовать try-with-resources

Не понимаю куда копать, в моих тестах все работает. Так же пробовал делать через BufferedInputStream и byte[] buffer, а не через BufferedOutputStream
Вот мой код:

import java.io.*;
import java.util.*;

public class Solution {
    public static void main(String[] args) throws IOException
    {

        TreeMap<Integer, String> filenames = new TreeMap<>();
        Scanner scanner = new Scanner(System.in);

        while (true){
            String fileName = scanner.nextLine();
            if (fileName.equals("end")){
                break;
            }
            int i = fileName.indexOf(".part") + 5;
            int n = Integer.parseInt(fileName.substring(i));
            filenames.put(n,fileName);
        }

        scanner.close();

        String strName = filenames.get(filenames.firstKey());
        File fullFile = new File(strName.substring(0,strName.indexOf(".part")));
        FileInputStream inputStream;
        FileOutputStream fileOutputStream = new FileOutputStream(fullFile);
        BufferedOutputStream outputStream = new BufferedOutputStream(fileOutputStream);

        for (Map.Entry<Integer,String> pair : filenames.entrySet()){
            String fileName = pair.getValue();

            inputStream = new FileInputStream(fileName);

            while (inputStream.available() > 0){
                int data = inputStream.read();
                outputStream.write(data);
            }
            inputStream.close();
        }

        outputStream.close();
        fileOutputStream.close();

    }
}
  • ,

level08.lesson11.home05

Добрый день.
Есть задача:
package com.javarush.test.level08.lesson11.home05;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/* Мама Мыла Раму. Теперь с большой буквы
Написать программу, которая вводит с клавиатуры строку текста.
Программа заменяет в тексте первые буквы всех слов на заглавные.
Вывести результат на экран.

Пример ввода:
  мама     мыла раму.

Пример вывода:
  Мама     Мыла Раму.
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s = reader.readLine();

        //напишите тут ваш код
        String[] splited = s.split(" ");
        String newString = "";
        for (int i = 0; i < splited.length; i++)
        {
            char ch = splited[i].charAt(0);
            char chUpper = splited[i].toUpperCase().charAt(0);
            String strCh = "" + ch;
            String strChUp = "" + chUpper;
            splited[i] = splited[i].replaceFirst(strCh, strChUp);
            newString = newString + splited[i] + " ";
        }
        newString = newString.trim();

        System.out.println(newString);
    }
}

В IDEA работает всё прекрасно, но не проходит тестирование. Подскажите, пожалуйста, что посмотреть?

P.S. ещё раз почитал комментарии и сделал вывод, что данную задачу нельзя решать через split, потому что не спроста указано много пробелов в вводе и выводе, так? Надо решать обязательно через toCharArray()?
  • ,

3. Используя цикл, найди самую длинную строку в списке.

Задание такое:

1. Создай список строк.
2. Считай с клавиатуры 5 строк и добавь в список.
3. Используя цикл, найди самую длинную строку в списке.
4. Выведи найденную строку на экран.
5. Если таких строк несколько, выведи каждую с новой строки.

Мое решение всё делает как сказано, но почему то не проходит тестирование. хотя такое же задание только на поиск самой короткой строки я выполнил так же и всё прошло.
подскажите почему не проходит?

public static void main(String[] args) throws Exception
    {
        // напишите тут ваш код
        ArrayList<String> list = new ArrayList<String>();

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        for (int i =0; i < 5;i++){
            String s = reader.readLine();
            list.add(s);
        }

        for (int i = 1; i < list.size(); ){

            int a = list.get(i-1).length();
            int b = list.get(i).length();

            if (a < b ) list.remove(i-1);
            else if (a > b) list.remove(i);
            else i++;
        }

        for (String t : list)
        {
            System.out.println(t);
        }
    } 
  • ,

Написать пять методов, которые вызывают друг друга. Каждый метод должен возвращать свой StackTrace.

Написать пять методов, которые вызывают друг друга. Каждый метод должен возвращать свой StackTrace.

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        method1();
    }

    public static String method1()
    {
        method2();
        StackTraceElement[] elements = Thread.currentThread().getStackTrace();

        return elements[2].getMethodName();

    }

    public static String method2()
    {
        method3();
        StackTraceElement[] elements = Thread.currentThread().getStackTrace();

        return elements[2].getMethodName();

    }

    public static String method3()
    {
        method4();
        StackTraceElement[] elements = Thread.currentThread().getStackTrace();

        return elements[2].getMethodName();

    }

    public static String method4()
    {
        method5();
        StackTraceElement[] elements = Thread.currentThread().getStackTrace();

        return elements[2].getMethodName();

    }

    public static String method5()
    {
        StackTraceElement[] elements = Thread.currentThread().getStackTrace();

        return elements[2].getMethodName();

    }
}


Подскажите почему не принимает задание? в чем ошибка?

com.javarush.test.level17.lesson10.bonus01 - кириллица в args[]

Подскажите, пожалуйста, как настроить Idea, чтоб из args[] принимались кириллические символы? Это необходимо для решения указанной в теме.
При дебаге вместо соответствующих значений отображаются знаки вопроса.

level15.lesson12.home09 не валидируется сервером при правильном выводе

Вывод кода — аналогичен приведенному в условии.
Отправлял на валидацию БЕЗ комментариев внутри приведенного ниже кода. Оставил их здесь, чтоб пояснить свои манипуляции.

package com.javarush.test.level15.lesson12.home09;

/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) - для чисел (дробные числа разделяются точкой)
alert(String value) - для строк

Пример 1
Ввод:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Вывод:
lvl view name

Пример 2
Ввод:
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
Вывод:
obj name
double 3.14
*/

package com.javarush.test.level15.lesson12.home09;

/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) - для чисел (дробные числа разделяются точкой)
alert(String value) - для строк

Пример 1
Ввод:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Вывод:
lvl view name

Пример 2
Ввод:
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
Вывод:
obj name
double 3.14
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) throws Exception {
        //add your code here
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String inpUrl = br.readLine();

        //Get Substring with params - after "?" sign:
        String paramsString = inpUrl.substring((inpUrl.indexOf("?")) + 1);

        String paramListOut = ""; //String with listed parameters for output
        String objVal = null;//String for storing the value of "obj" parameter
        
        while(true) {
            // find first param by "=" before its value
            String oneParam = paramsString.substring(0, paramsString.indexOf("=")); // find first param before value

            // Check if the parameter is "obj":
            if (oneParam.equals("obj")) {
                // Check if "obj" is not last parameter in URL substring:
                if (paramsString.contains("&")) { // <- if "obj" not last
                    objVal = paramsString.substring(paramsString.indexOf("=") + 1, paramsString.indexOf("&"));
                } else { // <- if "obj" is last
                    objVal = paramsString.substring(paramsString.indexOf("=") + 1);
                }
            }

            // Check if parameter name contains divider "&" and replace it by " ":
            if (oneParam.contains("&")) {
                oneParam = oneParam.replaceAll("&", " ");
            }
            // Add Parameter to output string
            paramListOut += oneParam + " "; //

            // Cut first param with value from sting with all params:
            paramsString = paramsString.substring(oneParam.length());

            // Check if URL parameter is last
            if (!paramsString.contains("&")) {
                // Output final string with parameters and cut the space at the end:
                System.out.println(paramListOut.substring(0, paramListOut.length() - 1));
                break;
            }

            // If the parameter is not last in URL, cut it and continue "while":
            paramsString = paramsString.substring(paramsString.indexOf("&") + 1);

            } // "while"

        // send "obj" to appropriate method and output
        if (objVal != null) {
            try {
                alert(Double.parseDouble(objVal));
            } catch (NumberFormatException e) {
                alert(objVal);
            }
        }
    }

    public static void alert(double value) {
        System.out.println("double " + value);
    }

    public static void alert(String value) {
        System.out.println("String " + value);
    }
}

level14.lesson08.bonus03

Сервер выдаёт ошибку, что программа не компилируется, хотя в IDE всё компилируется и работает:

class Solution:
/*Задача: Класс является синглтоном (реализует паттерн(шаблон) Singleton), 
если позволяет создать всего один объект своего типа.

Реализовать Singleton pattern:
1. Создай класс Singleton в отдельном файле.
2. Добавь в него статический метод getInstance().
3. Метод getInstance должен возвращать один и тот же объект класса Singleton 
   при любом вызове метода getInstance.
4. Подумай, каким образом можно запретить создание других объектов этого класса.
5. Сделай все конструкторы в классе Singleton приватными (private).
6. В итоге должна быть возможность создать объект (экземпляр класса) 
   ТОЛЬКО используя метод getInstance. */
public class Solution
{
    public static void main(String[] args)
    {
        Singleton singleton = Singleton.getInstance();
    }
}


class Singleton:
public class Singleton
{
    // Constructor
    private Singleton()
    {
    }

    // Private object to ensure that it will be single
    private static Singleton singleton = new Singleton();

    // Public method to call this single object
    public static Singleton getInstance() {
        return singleton;
    }
}

level13.lesson11.bonus01 не проходит валидацию

Почему решение, приведенное ниже, не валидируется сервером? Вывод корректен, все условия соблюдены.

public static void main(String[] args) throws Exception
    {
        // Get name of file that should be read
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String fileName = br.readLine();
        br.close(); // Close Filename reading stream

        // Read File
        InputStream inStream = new FileInputStream(fileName);

        String digSeq = ""; // String to which digits from file will be appended
        while (inStream.available() > 0)
        {
            digSeq += (char)inStream.read(); //VH: Output file content as characters
        }
        inStream.close(); // Close File reading stream

        String[] stringArr = digSeq.split("\r\n");     // Array with integers as chars
        List<Integer> intsArrList = new ArrayList(); // Integers array to add chars converted to int and for sorting

        for (int i = 0; i < stringArr.length; i++) {
            int convInt = Integer.parseInt(stringArr[i]);
            // Add to ArrayList only Even digits
            if (convInt%2 == 0) {
                intsArrList.add(convInt);
            }
        }

        Collections.sort(intsArrList); // Sort ArrayList with even digits

        // Output to console Even digits
        for (Integer i : intsArrList) {
            System.out.println(i);
        }
    }