Frostman's blog

Blog about programming and techs

JC13 - Lecture 01. Java Intro

Mirantis Java Сourse 2013 (back)

Lecture 01. Java Intro

История и введение в язык программирования Java и платформу JVM.

Основная IDE - IntelliJ IDEA 12 Community Edition.

Практическое задание (на занятии) #1

  1. Убедиться в наличии Oracle JDK 6/7, скачать и установить при необходимости. Убедиться в работе консольных приложений javac и java.

  2. Попробовать написать простейший “Hello, World!”, скомпилировать его и запустить.

  3. Написать чуть более сложную программу, которая читает из потока ввода int n и String name и n раз выводит сообщение Case #<номер итерации>: Hello, <name>.

Практическое задание (на занятии) #2 / Домашнее задание

Заданием является набор задач, которые необходимо решить на сайте acm.sgu.ru/univer с использованием компилятора Java 6 + Checkstyle (JAVA-X). Только решения отправленные с использованием этого компилятора будут засчитываться. После регистрации на этом сайте, вам необходимо прислать мне свой идентификатор на нем, чтобы я мог смотреть ваши решения (например, QWE).

Список задач для решения: 100, 251-260, 404, 405, 410.

Я советую начать с задания #100, далее на странице архив задач вы можете видеть сколько человек решили ту или иную задачу и таким образом выбирать более простые задачи для решения в первую очередь.

Далее следуют некоторые примеры, которые помогут вам в решении этих задач.

  • A + B
1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();
        System.out.println(a + b);
    }

}
  • Сортировка массивов
1
2
int[] array = new int[]{0, 1, 2, 3, 4, 5};
java.util.Arrays.sort(array);

Так же для того чтобы задать отношение сравнимости вы можете использовать интерфейсы Comparable и Comparator.

  • Коллекции в Java (java.util.*)
1
2
3
4
5
6
7
8
9
10
11
List<Integer> list = new ArrayList<Integer>();
list.add(1);
int a = list.get(0); // a == 1

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "a");
map.put(2, "b");
map.get(1); // "a"
map.get(2); // "b"
map.put(1, "ccc");
map.get(1); // "ccc"

В ходе решения задач вы можете встретить следующие ошибки:

  • OK - тест пройден;
  • WA - неправильный ответ на тест;
  • PE - ошибка вывода (тестирующая программа не смогла понять, что вы вывели);
  • TL - ваша программа превысила ограничение по времени на тесте и была прервана;
  • ML - ваша программа превысила ограничение по памяти на тесте и была прервана;
  • RE - ваша программа прервалась с ошибкой времени исполнения (деление на 0, выход за границу массива и т.п.);
  • SD - ваша программа ничего не делает и не расходует процессорное время (например ожидает ввод с клавиатуры или это такой “хитрый” RE).

Так же на стадии компиляции осуществляется style check, поэтому вы можете получить ошибку компиляции в случае плохо отформатированного кода.

Для успешной компиляции убедитесь, что ваша программа удовлетворяет следующим требованиям:

  • отступы расставлены в количестве 4 пробела на каждый уровень вложенности (используя IDEA это будет получаться автоматически даже при нажатиях Tab);
  • у всех управляющих конструкций тело обрамлено фигурными скобками (для if, for, if .. else, while и др.);
  • бинарные операторы (+, -, /, *, == и др.), а так же оператор присваивания (=) окружены единичными пробелами;
  • классы, поля и имена переменных названы в соответствии с общепринятыми стандартами в Java (например, для классов Solution, Pair, ArraySet, для остальных i, index, totalCount и т.п.);
  • не используйте более одного оператора в строке;
  • используйте фигурные скобки так, как по умолчанию их расставляет IDEA (фигурная открывающаяся на той же строке через пробел, закрывающаяся на отдельной).

Если это не помогло, то:

  • при помощи сочитания клавиш Ctrl+Alt+L переформатируйте исходный код решения, если он изменился, то это может стать причиной исправления ошибки;
  • прочитайте отчет тестирующей системы по ссылке с Compilation Error из раздела “статус”.