package com.javarush.test.level18.lesson05.task03;

Я слеп и не вижу где ошибка, работает правильно, если я правильно понимаю.

/* Разделение файла
Считать с консоли три имени файла: файл1, файл2, файл3.
Разделить файл1 по следующему критерию:
Первую половину байт записать в файл2, вторую половину байт записать в файл3.
Если в файл1 количество байт нечетное, то файл2 должен содержать бОльшую часть.
Закрыть потоки. Не использовать try-with-resources
*/

import java.io.*;

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

        FileInputStream inputStreamReader = new FileInputStream(fileName1);
        int available = inputStreamReader.available();
        byte[] read = new byte[available];
        int count = inputStreamReader.read(read);
        inputStreamReader.close();

        FileOutputStream fileOutputStream = new FileOutputStream(fileName2);
        fileOutputStream.write(read, 0, (int)Math.ceil(count/2.0));
        fileOutputStream.close();

        fileOutputStream = new FileOutputStream(fileName3);
        fileOutputStream.write(read, (int)Math.ceil(count/2.0),  count/2);
        fileOutputStream.close();
    }
}
  • ,

Level08.Lesson11.Home05.

Не проходит тестирование, в среде запускается и работает исправно(пока не придумал нерабочий пример). Перед тем как реализовать через char массив, хотелось бы разобраться, почему этот вариант является нерабочим.
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 s1="";
        if(s.charAt(0)!=' ') s1=s1+ Character.toUpperCase(s.charAt(0));

             for (int i = 0; i <s.length()-1 ; i++)
            {
                if(s.charAt(i)==' '&&Character.isLowerCase(s.charAt(i+1))){
                    s1= s1+s.charAt(i)+Character.toUpperCase(s.charAt(i+1));
                    i++;
                }
                else s1=s1+s.charAt(i);
            }
            while(s1.length()<s.length())s1=s1+s.charAt(s1.length());
        System.out.println(s1);
        //напишите тут ваш код
    }


}

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?)

level09.lesson08.task05 Три вопроса в порядке важности

Я читал, что дальнейший код метода после исключения в нём пропускается. А дальнейший код в блоке try тоже пропускается или нет? Похоже пропускается, да? Раз у меня всё время выводится в консоли исключение из method1()

Не совсем понял почему раньше писали такую строку(которую я тоже не понял) Thread.currentThread().getStackTrace() а тут на объекте вызываем getStackTrace()?

В консоли(ниже я скопировал вывод) что-то ничего не понял с 5 строки и до конца. Может кто — нибудь написать, что там за продолжение? =)) *invoke invoke0 и последняя строка*

package com.javarush.test.level09.lesson08.task05;
    
    /* Перехват unchecked исключений
    В методе processExceptions обработайте все unchecked исключения.
    Нужно вывести стек-трейс каждого возникшего исключения используя метод printStack.
    Можно использовать только один блок try..
    */
    
    public class Solution
    {
        public static void main(String[] args) {
            processExceptions(new Solution());
        }
    
        public static void processExceptions(Solution obj) {
            try
            {
                obj.method1();
                obj.method2();
                obj.method3();
            }
            catch (NullPointerException | IndexOutOfBoundsException | NumberFormatException e)
            {
                printStack(e);
            }
        }
    
        public static void printStack(Throwable throwable) {
            System.out.println(throwable);
            for (StackTraceElement element : throwable.getStackTrace()) {
                System.out.println(element);
            }
        }
    
        public void method1(){
            throw new NullPointerException();
        }
    
        public void method2() {
            throw new IndexOutOfBoundsException();
        }
    
        public void method3() {
            throw new NumberFormatException();
        }
    }

    java.lang.NullPointerException
    com.javarush.test.level09.lesson08.task05.Solution.method1(Solution.java:36)
    com.javarush.test.level09.lesson08.task05.Solution.processExceptions(Solution.java:18)
    com.javarush.test.level09.lesson08.task05.Solution.main(Solution.java:12)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
    
    Process finished with exit code 0

Классы и интерфейсы. Попытка понять

habrahabr.ru/post/30444/ — обзор на Хабре
ru.stackoverflow.com/questions/136909/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%8B-%D0%B2-%D0%9E%D0%9E%D0%9F-java-%D0%BF%D0%BE-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%BC%D1%83 — на стэке

Всё равно пока не понятно. Интерфейс — это тоже класс, только описывающий дополнительные методы для какого-либо класса? Если да, то методы начального класса просто не видны, или ими можно пользоваться? Или их необходимо переопределять?

А если интерфейс не класс, тогда это просто список методов, объединённых под одним названием, которые можно использовать в любом классе, просто определив, для какого класса их используют? Или это группа методов, которые применимы к определённому классу? Тогда в программе переменная класса с определённым интерфейсом может использовать и методы класса, и методы интерфейса? Или только методы интерфейса?
Допустим, есть класс человек, у которого описан булев метод движение. Мы можем применить к нему набор методов «ноги», «колёса» с разными видами движения? При этом будет ли булев метод класса человек виден через интерфейс «ноги» или «колеса»? Или всё же это будут другие классы, которые мы определяем для переменной:
Человек Сэм = новый ЧеловекСНогами? и тогда у нас должен быть описан класс ЧеловекСНогами? Или же это просто набор методов?

Вопрос про метод clone

Добрый день! В конце 21 уровня дан список дополнительной литературы. Так вот, читая одну из них (конкретно вот эту) у меня появился вопрос: Почему возникает ошибка компиляции для примера, который дан ниже???


Для блокирования возможности клонирования во всех классах Java, в базовом классе Object метод clone() был описан как защищенный (protected). Это не только исключает возможность использования метода клонирования программистом, просто использующим (не расширяющим) этот класс, но и означает что вы не можете использовать clone() используя ссылку на базовый класс. (Хотя это может показаться полезным. Например, при полиморфном клонировании связок классов Object). Такой метод применен для того, чтобы на этапе компиляции информировать о том что данный объект является неклонируемым. Как ни странно, большинство классов стандартных библиотек Java неклонируемые. Поэтому, написав:

Integer x = new Integer(1);
x = x.clone();

на этапе компиляции это приведет к возникновению ошибки. Компилятор выдаст сообщение о том что метод clone() недоступен (поскольку Integer не переопределяет его и он по умолчанию является защищенным (protected)).

Хочу понять почему. Потому что clone объявлен как protected? Но ведь все классы наследуется от Object, так что у всех он должен быть изначально. Или я ошибаюсь? Помогите пожалуйста!!!
  • ,

Вопрос по работе с плагином

Ребятушки, помогайте. Установил плагин в idea15, потом решил поработать в 14ой. Поставил туда. Кнопки появились, но реакция на их нажатие нулевая. Подскажите, в чём может быть беда? Есть какие-то идеи, как поправить?

Вопрос. Архитектура приложения, планировка разработки. От А до Я.

Ребят подскажите пожалуйста книги, которые бы можно было почитать на тему разработки и планировки архитектуры приложений перед тем, как приниматься за сам код (еще точно не понял как это называется правильно, по этому гугл выдает шлак какой-то. Всегда перед тем как строить дом, рисуют чертежи, вот именно я и хочу научиться делать). Модульность и прочее, управление проектом, менеджмент разработки крупного ПО. Всегда перед тем как строить дом, рисуют чертежи, вот именно я и хочу научиться делать.

Всем заранее спасибо за помощь.
  • ,

level16.lesson05.task03

package com.javarush.test.level16.lesson05.task03;

/* Продвижение на политических дебатах
1. Разберитесь, что делает программа.
2. Нужно сделать так, чтобы Иванов сказал больше всего речей на политических дебатах.
3. Подумай, какой метод можно вызвать у объекта ivanov, чтобы Иванов разговаривал, пока не завершится всё свободное время.
*/

public class Solution {
    public static int totalCountSpeeches = 200;
    public static int soundsInOneSpeech = 1000000;

    public static void main(String[] args) throws InterruptedException {
        Politic ivanov = new Politic("Иванов");
       Politic petrov = new Politic("Петров");
        Politic sidorov = new Politic("Сидоров");

        while (ivanov.getCountSpeaches() + petrov.getCountSpeaches() + sidorov.getCountSpeaches() < totalCountSpeeches) {
        }

        System.out.println(ivanov);
        System.out.println(petrov);
        System.out.println(sidorov);
    }

    public static class Politic extends Thread {
        private int countSounds;

        public Politic(String name) {
            super(name);
            start();
        }

        public void run() {
            while (countSounds < totalCountSpeeches * soundsInOneSpeech) {
                countSounds++;
            }
        }

        public int getCountSpeaches() {
            return countSounds / soundsInOneSpeech;
        }

        @Override
        public String toString() {
            return String.format("%s сказал речь %d раз", getName(), getCountSpeaches());
        }
    }
}


Вопрос вот в чем, не понятно зачем эта строка
while (ivanov.getCountSpeaches() + petrov.getCountSpeaches() + sidorov.getCountSpeaches() < totalCountSpeeches) {
        }

Вопрос вместо приветствия

Всем привет, меня зовут Дмитрий.
Постигаю азы Java дошел до 16 уровня, решил сделать небольшой перерыв и систематизировать знания книгами (почти добил Head First) и другими источниками. По ходу изучения возникают всякие вопросы, надеюсь не против, если в основном в этом блоге я буду задавать их. Если они глупые или очевидные, прошу простить и помочь.
И сразу вопрос.
Изучаю методы String. В качестве примера на одном из сайтов приведен следующий отрывок:
(Str.replaceFirst("(.*)abcdf(.*)","Sample" ));

Что значит вот эта штука — (.*)?

Интересный вопрос по Java

Подскажите пожалуйста: как присвоить переменной имя, равное параметру другой переменной?
к примеру:

     public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<ArrayList<String>> arrayMain = new ArrayList<ArrayList<String>>();
        int fieldSize = Integer.parseInt(reader.readLine());
        for (int i = 0; i < fieldSize; i++) {
            String alphabet = "abcdefghijklmnopqrstuvwxyz";
            String a = String.valueOf(alphabet.charAt(i));
            //ArrayList<String> /*параметр присваемый переменной a*/ = new ArrayList<String>();
        }
    }

Заранее спасибо
  • ,

level06.lesson11.bonus03

Доброго времени суток, господа.

Решал задачу, указанную в заголовке, изобрел велосипед:
Условие:
/* Задача по алгоритмам
Задача: Написать программу, которая вводит с клавиатуры 5 чисел и выводит их в возрастающем порядке.*/



public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader  = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        for(int i=0;i<5;i++) arrayList.add(Integer.parseInt(reader.readLine()));

        for(int i=0;i<arrayList.size()-1;i++)
        {
                if (arrayList.get(i) > arrayList.get(i+1))
                {
                    for(int j=0; j<5;j++) System.out.println(arrayList.get(j));//для поэтапного контроля
                    System.out.println();
                    int buf1 = arrayList.get(i);
                    int buf2 = arrayList.get(i+1);
                    arrayList.set(i, buf2);
                    arrayList.set(i+1, buf1);
                    i = 0;
                }
        }

        for(int i=0;i<5;i++)
            System.out.println(arrayList.get(i));
    }
}


Для набора:
3
2
15
6
17
Выполняется отлично, но для тестового набора:
-24
2
-100
1
0

Выполняется не отлично, по какой то причине не меняет значения -24 и -100 местами и получается следующий результат(по-итерационно):
-24
2
-100
1
0

-24
-100
2
1
0

-24
-100
1
2
0

-24
-100
1
0
2

-24
-100
0
1
2

Задачу решил с помощью цикла:

for(int i =0; i<arrayList.size();i++)
        {
            for(int j=0;j<arrayList.size();j++)
            {
                if(arrayList.get(i)<arrayList.get(j))
                {
                    int buf1 = arrayList.get(i);
                    int buf2 = arrayList.get(j);
                    arrayList.set(i,buf2);
                    arrayList.set(j,buf1);
                }
            }
        }


Но вопрос остался открытым, почему 1-ый вариант не работает?
Может ли кто-нибудь объяснить?