FileReader

Добрый день! Объясните, пожалуйста, метод действия FileReader'a. Он читает целиком строку, а потом переходит на следующую? Или по символам?

В этом коде:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader fileReader = new BufferedReader(new FileReader(reader.readLine()));
ArrayList<Integer> lines = new ArrayList<Integer>();
String line;
while((line = fileReader.readLine()) != null)
{
int i = Integer.parseInt(line);
lines.add(i);
}

что именно делают строки:

String line;
while((line = fileReader.readLine()) != null){}

Как создать исполняемый файл?

Всем привет.
Сегодня закончил свой первый более менее «серьезный» проект, теперь возникла проблема: как из того кода который находится в файлах с классами смастерить исполняемый jar, а лучше exe файл при запуске которого открывалась бы командная строка или окошко программы??? (программка у меня без ГУИ)В интернете толком ничего не расписано, поэтому понять ничего не могу. Решил сюда написать.

Если это важно — код писал в Intellej IDEA 13.

level27.lesson15.big01

Подскажите, задача уже рабочая или еще тестируется, а то смотрю дальше 1-го уровня никто не прошел.

И так вопросы по заданию 2

1. Мы много работаем с консолью. Пора создать единую точку взаимодействия.
Создайте класс ConsoleHelper с единственным BufferedReader, через который будете работать с консолью.
Запомните, этот класс не хранит никаких данных и состояний, поэтому все методы будут статическими.
Создайте в нем три метода:
-writeMessage(String message) — для вывода message в консоль
-String readString() — для чтения строки с консоли
-ListgetAllDishesForOrder() — просит ползователя выбрать блюдо и добавляет его в список. Введенное 'exit' означает завершение заказа.
исключения пробрасывайте выше, на этом уровне не понятно, что с ними делать.
Имеет ли значение для тестов как выбирать блюдо, название вводить или по номеру

2. Отрефакторьте код — работа с консолью должна быт чтолько через класс ConsoleHelper

3. Вернемся к классу Order: в нем есть ссылка на планшет, и еще есть список выбранных блюд.
Создайте поле dishes — список блюд. Инициализируйте его в конструкторе, вызвав метод getAllDishesForOrder из ConsoleHelper.
Ссылку на планшет как получать через конструктор или сеттер

4. Перепишите метод toString в классе Order. Пусть он возвращает пустую строку, если нет блюд в заказе, иначе
вывод должен быть аналогичный примеру в порядке добавления блюд. Используйте ConsoleHelper.
Пример:
Your order: [Juice, Fish] of Tablet{number=5}

5. У нас все завязано на работу с консолью. Однако, при возникновении исключений, наше приложение умрет.
Чтобы узнать причину — добавим в Tablet статический логгер java.util.logging.Logger, инициализированный именем класса.

6. В методе createOrder класса Tablet обработаем исключения ввода-вывода.
Запишем в лог «Console is unavailable.». Уровень лога — SEVERE — это самый серьезный уровень, мы не можем работать.
7. Надо начинать тестировать наше приложение.
Добавьте в main создание планшета и создание заказа — new Tablet(5).createOrder();

level05.lesson12.bonus03

Доброго времени суток. Прошу посмотреть код и ткнуть носом где я не прав. Алгоритм работы вроде правильный, сначала вводим N чисел, потом выводим максимум этих чисел (если вводим (2, -2, 5, 4, 1) — максимум это 5). Но тест не прохожу. В чем ошибся?


/* Задача по алгоритмам
Написать программу, которая:
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 maximum = 0;
        int i, number;
        int totalNumbers = Integer.parseInt(reader.readLine());

        if(totalNumbers < 0){
            System.out.print("Please, enter a valid value.");
        }

        for(i = 0; i < totalNumbers; i++){
            number = Integer.parseInt(reader.readLine());
            if(number > maximum)
                maximum = number;
        }

        System.out.println(maximum);
    }
}
  • ,

level06.lesson05.task03;

/* 10 000 объектов Cat и Dog
Создать в цикле 10 000 объектов Cat и Dog. (Java-машина должна начать уничтожать неиспользуемые, и метод finalize хоть раз да вызовется).
*/

public class Solution
{
public static void main(String[] args)
{
int n = 10000;
Cat[] cat = new Cat[n];
Dog[] dog = new Dog[n];
for(int i = 1; i < n;i++){
cat[i] = new Cat();
dog[i]= new Dog();
}

}
}

class Cat
{
@Override
protected void finalize() throws Throwable
{
super.finalize();
System.out.println(«Cat destroyed»);
}
}

class Dog
{
@Override
protected void finalize() throws Throwable
{
super.finalize();
System.out.println(«Dog destroyed»);
}
}

Не могу понять почему не создаются объекты? Объясните в чем проблема
  • ,

level08.lesson08.task05 Разбор полетов

Со всех задач, решенных на JavaRush, застрял именно на этой конкретно, и понял, что остались не понятные моменты по Set, Map, Iterator. Прошу помощи знающих :)

/* Удалить людей, имеющих одинаковые имена
Создать словарь (Map<String, String>) занести в него десять записей по принципу «фамилия» - «имя».
Удалить людей, имеющих одинаковые имена.
*/
public class Solution
{
    public static HashMap<String, String> createMap()
    {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("Сидоров", "Сидор");
        map.put("Федоров", "Федя");
        map.put("Николаев", "Коляба");
        map.put("Егоров", "Жорик");
        map.put("Светка", "Чветка");
        map.put("Костин", "Костямба");
        map.put("Киров", "Кирюха");
        map.put("Стоянова", "Стоя");
        map.put("Петров", "Петруччо");
        map.put("Оля", "Коля");

        return map;
    }

public static void removeTheFirstNameDuplicates(HashMap<String, String> map)
    {
        HashMap<String, String> map2 = new HashMap<String, String>(map); //дубликат map
        HashMap<String, String> map3 = new HashMap<String, String>(map); //дубликат map

        for (Map.Entry<String, String> pair : map2.entrySet())
        {
            map3.remove(pair.getKey());

            if (map3.containsValue(pair.getValue()))
            {
                removeItemFromMapByValue(map, pair.getValue());
            }
        }
    }


В коллекции map значения никак не упорядочены, но всё равно порядок какой-то должен быть произвольный, они же(значения) не плавают там как рыбы в океане, динамично перемещаясь по ячейкам памяти. Т.е. если в map ключ-значение «Иванов» — «Петя» первое, то и в дубликате map2 оно будет тоже первым. Верно?
map3.remove(pair.getKey()); — удаляем из map3 первую пару значений
if (map3.containsValue(pair.getValue())) — по логике вещей при одном прохождении цикла for get.Key и getValue для все map(2)(3) будет первое значение, допустим «Сидоров». Такого что б getValue для map2 и getValue для map3 вызывал разные значение быть не может, при условии что map3 и map2 копии map?
  • ,

просьбы о помощи по IntelliJ IDEA

Прошу помощи!
Не могу запустить на выполнение ни одну из своих программ в IntelliJ IDEA.
Приступила к решению заданий 8го урока, но при попытке запустить новую (сохраненную) программу
(см. рис. 1), IDEA выполняет всегда ...level07.lesson12.home06.Solution и выдает соответствующие ей ошибки (см. рис. 2).

Желтым подчеркнуты места, где я проверяла настройки. Все настроено на level08.lesson03.task02.
Красной линией выделен комментарий, добавленый после первой неудачи с запуском для удобства копирования в блог и пункт меню, которым запускаю программу на выполнение. Красным овалом обведены места, ссылающиеся на level07.lesson12.home06.Solution.


Вместо вывода/ошибок запускаемой задачи, открывается окно программы level07.lesson12.home06.Solution (код решения закрашен) и ее вывод/ошибки:


С чем это может быть связано и как исправить?
  • ,

level07.lesson09.task01


package com.javarush.test.level07.lesson09.task01;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/* Три массива
1. Введи с клавиатуры 20 чисел, сохрани их в список и рассортируй по трём другим спискам:
Число делится на 3 (x%3==0), делится на 2 (x%2==0) и все остальные.
Числа, которые делятся на 3 и на 2 одновременно, например 6, попадают в оба списка.
2. Метод printList должен выводить на экран все элементы списка  с новой строки.
3. Используя метод printList выведи эти три списка на экран. Сначала тот, который для x%3, потом тот, который для x%2, потом последний.
*/



Привет! Подскажите, что писать в методе printList? Вообще не лезет в голову ничего, кроме как изменить его!

Клуб взимопомощи НСНД

Клуб взимопомощи НСНД
(«Научился Сам — Научи Другого»)
Группа в вконтакте: vk.com/javaclubnsnd
Топик в группе javarush.ru в vk.com: vk.com/topic-43948962_30169733

Друзья! Все мы здесь об»единены общей целью — изучением Java. Вопросов и непонятных моментов возникает уйма, а поиск ответов на них занимает много времени, особенно занимаясь самостоятельно, без преподавателя. А хотелось бы чтобы обучение проходило как можно быстрее.
Хотелось бы иметь своего «персонального» Наставника, к которому можно обращаться по любому вопросу любое количество раз, и который будет помогать и об»яснять с радостью и бесплатно именно мне!
Если так, то вступайте в Клуб взимопомощи НСНД. И тогда наше продвижение вперед в изучении Java пойдет так быстро что НаСНеДогонят!

Смысл в следующем — каждый Участник Клуба имеет Права и Обязанности:

1. Права — получает в качестве Наставника другого Участника Клуба, имеющего больше знаний и прошедшего как минимум на несколько уровней дальше, который и будет об»яснять всё что знает сам именно мне, вникая во все мои Java-проблемы. Выгода — очевидна!

2. Обязанности — становится Наставником для двух других Участников Клуба, имеющих меньшие знания, находящихся на несколько уровней ниже. Выгода — как говорится «Лучший способ понять что-нибудь самому — это попытаться об»яснить это другому». Ну и пункт 1 разумеется.

Присоединяйтесь!

P.S. Полагаю внизу пирамиды проблем возникнуть не должно, разве что при очень большом количестве новичков возможно иногда будет возникать очередь на получение Наставника.
А вверху будем надеяться что найдется кто-то, очень-очень сильный доброволец, который возглавит нашу группу, ведь многие и так помогают на форуме info.javarush.ru. И это будет не менее почетно, чем находиться вверху Рейтинга javarush.ru/rating. А может даже и кто из организаторов Проекта javarush.ru …

Создать блог с дополнением к условиям некоторых задач, чтобы устранить их двусмысленность?

holodnsk :
«скоро вам чаще будут попадаться «телепатические» задачи, где видимый результат «правильный», однако решение не принимается. А затем будет еще веселее.»
<про уровень более 10>
А в редких случаях там можно дать ссылку на информацию, которой еще не было в лекциях.
Разумеется, там не должно быть никакой иной информации, помогающей решить задачу. Только устранить двусмысленность.
  • ,

level14.lesson08.bonus03

Не могу понять, почему не проходит проверку на сервере, в чем может быть ошибка?
Класс Singelton создан в отдельном файле, все как просят

package com.javarush.test.level14.lesson08.bonus03;

/* Singleton
Класс является синглтоном (реализует паттерн(шаблон) 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){
}
}

public class Singelton {
private static Singelton instance=new Singelton();

private Singelton(){
}

public static Singelton getInstance(){
return instance;
}
}