мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| java:basics [01/12/2014 13:03] – ybezrukov | java:basics [19/01/2015 09:23] (текущий) – ybezrukov | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | [[Первый семестр]] | ||
| - | ====== Урок 1 ====== | + | [[Второй семестр]] |
| - | ===== Начало работы ===== | + | |
| - | + | ||
| - | - Запустите Eclipse | + | |
| - | - Создайте новый проект (Правой кнопкой по левой вкладке Package Explorer, New, Project) | + | |
| - | - Создайте новый пакет (Правой кнопкой по имени проекта New, Package) | + | |
| - | - Создайте новый класс (Правой кнопкой по имени пакета, | + | |
| - | + | ||
| - | В результате в редакторе должнен быть результат, | + | |
| - | <code java> | + | |
| - | package ru.nsunc.lskywalker; | + | |
| - | + | ||
| - | class Privet { | + | |
| - | + | ||
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Вывод на экран ===== | + | |
| - | + | ||
| - | Чтобы напечатать строчку на экране, | + | |
| - | + | ||
| - | <code java> | + | |
| - | package ru.nsunc.lskywalker; | + | |
| - | + | ||
| - | class Privet { | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Объявление переменных ===== | + | |
| - | + | ||
| - | Чтобы объявить переменную в Яве, нужно сначало указать ее тип (множество значений, | + | |
| - | + | ||
| - | Например: | + | |
| - | <code java> | + | |
| - | int userID; | + | |
| - | </ | + | |
| - | Описывает переменную целого типа (int) имеющую имя userID. | + | |
| - | + | ||
| - | <code java> | + | |
| - | double multiplicationResult; | + | |
| - | </ | + | |
| - | Описывает вещественную переменную (double) имеющую имя multiplicationResult. | + | |
| - | + | ||
| - | <code java> | + | |
| - | package ru.nsunc.lskywalker; | + | |
| - | + | ||
| - | class Privet { | + | |
| - | | + | |
| - | int a; | + | |
| - | a = 5; | + | |
| - | int b = 10; | + | |
| - | | + | |
| - | c = 10.2; | + | |
| - | d = a * b * c; | + | |
| - | | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Ветвления ===== | + | |
| - | + | ||
| - | Если вы хотите, чтобы поведение вашей программы изменялось в зависимости от состояния переменных, | + | |
| - | + | ||
| - | <code java> | + | |
| - | if (условие) { | + | |
| - | | + | |
| - | } else { | + | |
| - | | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | Ветвь else в операторе ветвления необязательна и может быть пропущена. | + | |
| - | <code java> | + | |
| - | class Privet { | + | |
| - | | + | |
| - | int a; | + | |
| - | a = 5; | + | |
| - | int b = 10; | + | |
| - | | + | |
| - | c = 10.2; | + | |
| - | d = a * b * c; | + | |
| - | | + | |
| - | if (d > 100) { | + | |
| - | System.out.println(" | + | |
| - | } else { | + | |
| - | System.out.println(" | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | ===== Циклы ===== | + | |
| - | + | ||
| - | Если какой-то участок кода надо выполнить несколько раз, | + | |
| - | + | ||
| - | <code java> | + | |
| - | for (начальное условие; ограничение; | + | |
| - | + | ||
| - | } | + | |
| - | </ | + | |
| - | Например: | + | |
| - | + | ||
| - | <code java> | + | |
| - | class Privet { | + | |
| - | | + | |
| - | int a; | + | |
| - | a = 5; | + | |
| - | for (int i = 0; i < a; i++) { | + | |
| - | System.out.println(a); | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | Напечатает переменную a a раз. | + | |
| - | + | ||
| - | ====== Урок 2 ====== | + | |
| - | + | ||
| - | ===== Оператор выбора ===== | + | |
| - | + | ||
| - | Когда в программе требуется проверить много однотипных вариантов, | + | |
| - | + | ||
| - | <code java> | + | |
| - | switch (переменная){ | + | |
| - | case значение1: | + | |
| - | case значение2: | + | |
| - | case значение3: | + | |
| - | case значение4: | + | |
| - | case значение5: | + | |
| - | case значение6: | + | |
| - | case значение7: | + | |
| - | | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Чтение данных с клавиатуры ===== | + | |
| - | <code java> | + | |
| - | package ru.nsesc.lskywalker; | + | |
| - | + | ||
| - | import java.io.BufferedReader; | + | |
| - | import java.io.IOException; | + | |
| - | import java.io.InputStreamReader; | + | |
| - | + | ||
| - | public class Privet { | + | |
| - | + | ||
| - | public static void main(String[] args) throws IOException { | + | |
| - | + | ||
| - | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); | + | |
| - | + | ||
| - | System.out.println(" | + | |
| - | int input = Integer.parseInt(reader.readLine()); | + | |
| - | System.out.println(" | + | |
| - | int input2 = Integer.parseInt(reader.readLine()); | + | |
| - | System.out.println(" | + | |
| - | double input3 = Double.parseDouble(reader.readLine()); | + | |
| - | System.out.println(input + input2 + input3); | + | |
| - | + | ||
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Заполнение массива случайными числами ===== | + | |
| - | <code java> | + | |
| - | + | ||
| - | int size = 10; | + | |
| - | int[] arr = new int[size]; | + | |
| - | + | ||
| - | for(int i = 0; i < size; i++) | + | |
| - | { | + | |
| - | | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ====== Урок 3 ====== | + | |
| - | + | ||
| - | ===== Работа с графикой ===== | + | |
| - | <code java> | + | |
| - | package ru.nsunc.lskywalker; | + | |
| - | import java.awt.*; | + | |
| - | import java.awt.font.FontRenderContext; | + | |
| - | import java.awt.font.TextLayout; | + | |
| - | import java.awt.geom.*; | + | |
| - | import javax.swing.*; | + | |
| - | + | ||
| - | public class Graph extends JPanel { | + | |
| - | private static final long serialVersionUID = 1L; | + | |
| - | + | ||
| - | public int getWindowWidth() { | + | |
| - | return windowWidth; | + | |
| - | } | + | |
| - | + | ||
| - | public void setWindowWidth(int windowWidth) { | + | |
| - | this.windowWidth = windowWidth; | + | |
| - | } | + | |
| - | + | ||
| - | public int getWindowHeight() { | + | |
| - | return windowHeight; | + | |
| - | } | + | |
| - | + | ||
| - | public void setWindowHeight(int windowHeight) { | + | |
| - | this.windowHeight = windowHeight; | + | |
| - | } | + | |
| - | + | ||
| - | private int windowWidth = 400; | + | |
| - | private int windowHeight = 400; | + | |
| - | + | ||
| - | + | ||
| - | @Override | + | |
| - | public void paintComponent(Graphics gr) { | + | |
| - | Graphics2D g = (Graphics2D) gr; | + | |
| - | + | ||
| - | Color oldColor = g.getColor(); | + | |
| - | Paint paint = g.getPaint(); | + | |
| - | Stroke oldStroke = g.getStroke(); | + | |
| - | + | ||
| - | float[] shtrich = {14, 5}; | + | |
| - | BasicStroke bs = new BasicStroke(1, | + | |
| - | g.setStroke(bs); | + | |
| - | g.draw(new Line2D.Float(20, | + | |
| - | g.setStroke(oldStroke); | + | |
| - | + | ||
| - | g.draw(new Rectangle2D.Float(20, | + | |
| - | + | ||
| - | g.draw(new RoundRectangle2D.Float(20, | + | |
| - | + | ||
| - | g.draw(new Ellipse2D.Float(20, | + | |
| - | + | ||
| - | g.draw(new Ellipse2D.Float(200, | + | |
| - | + | ||
| - | g.draw(new Arc2D.Float(280, | + | |
| - | g.draw(new Arc2D.Float(280, | + | |
| - | g.draw(new Arc2D.Float(240, | + | |
| - | + | ||
| - | int[] arrayX = {20, 100, 100, 250, 250, 20, 20, 50}; | + | |
| - | int[] arrayY = {180, 180, 200, 200, 220, 200, 200, 190}; | + | |
| - | + | ||
| - | GeneralPath genPath = new GeneralPath(); | + | |
| - | genPath.moveTo(arrayX[0], | + | |
| - | for (int inn = 1; inn < 8; inn++) { | + | |
| - | genPath.lineTo(arrayX[inn], | + | |
| - | } | + | |
| - | genPath.closePath(); | + | |
| - | g.draw(genPath); | + | |
| - | + | ||
| - | Color newColor = new Color(0, 0, 255); | + | |
| - | g.setColor(newColor); | + | |
| - | Font font = new Font(" | + | |
| - | Font oldFont = g.getFont(); | + | |
| - | g.setFont(font); | + | |
| - | bs = new BasicStroke(3, | + | |
| - | g.setStroke(bs); | + | |
| - | FontRenderContext fontCont = g.getFontRenderContext(); | + | |
| - | TextLayout tLayout = new TextLayout(" | + | |
| - | AffineTransform affTrans = new AffineTransform(); | + | |
| - | affTrans.setToTranslation(270, | + | |
| - | g.draw(tLayout.getOutline(affTrans)); | + | |
| - | g.setFont(oldFont); | + | |
| - | g.setColor(oldColor); | + | |
| - | g.setStroke(oldStroke); | + | |
| - | + | ||
| - | // Draw axes; | + | |
| - | g.drawLine(20, | + | |
| - | g.drawLine(20, | + | |
| - | g.drawString(" | + | |
| - | g.drawString(" | + | |
| - | // Draw a curve; | + | |
| - | int[] xArray = {20, 40, 60, 80, 100, 120, 130, 140, 280, 332}; | + | |
| - | int[] yArray = {350, 345, 340, 310, 290, 280, 275, 273, 271, 269}; | + | |
| - | g.setColor(newColor); | + | |
| - | genPath = new GeneralPath(); | + | |
| - | genPath.moveTo(xArray[0], | + | |
| - | for (int inn = 1; inn < 10; inn++) { | + | |
| - | genPath.lineTo(xArray[inn], | + | |
| - | } | + | |
| - | // | + | |
| - | g.draw(genPath); | + | |
| - | g.setColor(oldColor); | + | |
| - | g.drawString(" | + | |
| - | + | ||
| - | GradientPaint gradPaint = | + | |
| - | new GradientPaint(20, | + | |
| - | g.setPaint(gradPaint); | + | |
| - | g.fillRect(21, | + | |
| - | g.setPaint(paint); | + | |
| - | + | ||
| - | gradPaint = | + | |
| - | new GradientPaint(20, | + | |
| - | g.setPaint(gradPaint); | + | |
| - | g.fill(new Ellipse2D.Float(21, | + | |
| - | g.setPaint(paint); | + | |
| - | + | ||
| - | gradPaint = | + | |
| - | new GradientPaint(230, | + | |
| - | g.setPaint(gradPaint); | + | |
| - | g.fill(new Ellipse2D.Float(200, | + | |
| - | g.setPaint(paint); | + | |
| - | + | ||
| - | g.fill(new RoundRectangle2D.Float(20, | + | |
| - | g.setPaint(paint); | + | |
| - | } | + | |
| - | + | ||
| - | public static void main(String[] args) { | + | |
| - | + | ||
| - | JFrame f = new JFrame(); | + | |
| - | Graph window = new Graph(); | + | |
| - | window.setWindowHeight(1000); | + | |
| - | window.setWindowWidth(1000); | + | |
| - | f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | + | |
| - | f.add(window); | + | |
| - | f.setSize(window.getWindowWidth(), | + | |
| - | f.setLocation(200, | + | |
| - | f.setVisible(true); | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | } | + | |
| - | + | ||
| - | </ | + | |
| - | То же, только без шахмат и первокурсниц: | + | |
| - | <code java> | + | |
| - | import java.awt.*; | + | |
| - | import java.awt.font.FontRenderContext; | + | |
| - | import java.awt.font.TextLayout; | + | |
| - | import java.awt.geom.*; | + | |
| - | import javax.swing.*; | + | |
| - | + | ||
| - | public class Graph extends JPanel { | + | |
| - | private static final long serialVersionUID = 1L; | + | |
| - | + | ||
| - | public int getWindowWidth() { | + | |
| - | return windowWidth; | + | |
| - | } | + | |
| - | + | ||
| - | public void setWindowWidth(int windowWidth) { | + | |
| - | this.windowWidth = windowWidth; | + | |
| - | } | + | |
| - | + | ||
| - | public int getWindowHeight() { | + | |
| - | return windowHeight; | + | |
| - | } | + | |
| - | + | ||
| - | public void setWindowHeight(int windowHeight) { | + | |
| - | this.windowHeight = windowHeight; | + | |
| - | } | + | |
| - | + | ||
| - | private int windowWidth = 640; | + | |
| - | private int windowHeight = 640; | + | |
| - | + | ||
| - | + | ||
| - | @Override | + | |
| - | public void paintComponent(Graphics gr) { | + | |
| - | Graphics2D g = (Graphics2D) gr; | + | |
| - | + | ||
| - | Color oldColor = g.getColor(); | + | |
| - | Paint paint = g.getPaint(); | + | |
| - | Stroke oldStroke = g.getStroke(); | + | |
| - | + | ||
| - | float[] shtrich = {14, 5}; | + | |
| - | BasicStroke bs = new BasicStroke(1, | + | |
| - | g.setStroke(bs); | + | |
| - | GeneralPath genPath = new GeneralPath(); | + | |
| - | g.draw(genPath); | + | |
| - | + | ||
| - | Color newColor = new Color(0, 0, 255); | + | |
| - | g.setColor(newColor); | + | |
| - | Font font = new Font(" | + | |
| - | Font oldFont = g.getFont(); | + | |
| - | g.setFont(font); | + | |
| - | bs = new BasicStroke(3, | + | |
| - | g.setStroke(bs); | + | |
| - | FontRenderContext fontCont = g.getFontRenderContext(); | + | |
| - | // TextLayout tLayout = new TextLayout(" | + | |
| - | // | + | |
| - | // | + | |
| - | // g.draw(tLayout.getOutline(affTrans)); | + | |
| - | g.setFont(oldFont); | + | |
| - | g.setColor(oldColor); | + | |
| - | g.setStroke(oldStroke); | + | |
| - | + | ||
| - | // Draw axes; | + | |
| - | g.drawLine(20, | + | |
| - | g.drawLine(20, | + | |
| - | g.drawString(" | + | |
| - | g.drawString(" | + | |
| - | // Draw a curve; | + | |
| - | double[] xArray; | + | |
| - | double[] yArray; | + | |
| - | double left = -4; | + | |
| - | double right = 4; | + | |
| - | double step = 0.1; | + | |
| - | int size = (int)((right-left)/ | + | |
| - | xArray = new double[size]; | + | |
| - | yArray = new double[size]; | + | |
| - | + | ||
| - | xArray[0] = left; | + | |
| - | yArray[0] = Math.sin(xArray[0]); | + | |
| - | + | ||
| - | for(int i = 1; i < size; i++) | + | |
| - | { | + | |
| - | xArray[i] = xArray[i - 1] + step; | + | |
| - | yArray[i] = Math.sin(xArray[i]); | + | |
| - | } | + | |
| - | + | ||
| - | long xArrayLong[] = new long[size]; | + | |
| - | long yArrayLong[] = new long[size]; | + | |
| - | + | ||
| - | for(int i = 0; i < size; i++) | + | |
| - | { | + | |
| - | xArrayLong[i] = Math.round(xArray[i]); | + | |
| - | yArrayLong[i] = Math.round(yArray[i]); | + | |
| - | } | + | |
| - | + | ||
| - | g.setColor(newColor); | + | |
| - | genPath = new GeneralPath(); | + | |
| - | genPath.moveTo(xArrayLong[0], | + | |
| - | for (int inn = 1; inn < size; inn++) { | + | |
| - | genPath.lineTo(xArrayLong[inn], | + | |
| - | } | + | |
| - | // | + | |
| - | + | ||
| - | g.draw(genPath); | + | |
| - | g.setColor(oldColor); | + | |
| - | g.drawString(" | + | |
| - | } | + | |
| - | + | ||
| - | public static void main(String[] args) { | + | |
| - | + | ||
| - | JFrame f = new JFrame(); | + | |
| - | Graph window = new Graph(); | + | |
| - | window.setWindowHeight(640); | + | |
| - | window.setWindowWidth(640); | + | |
| - | f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | + | |
| - | f.add(window); | + | |
| - | f.setSize(window.getWindowWidth(), | + | |
| - | f.setLocation(200, | + | |
| - | f.setVisible(true); | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ====== Урок 4 ====== | + | |
| - | ===== Работа с файлами, | + | |
| - | <code java> | + | |
| - | package ru.nsesc.lskywalker; | + | |
| - | import java.io.*; | + | |
| - | + | ||
| - | public class Reader { | + | |
| - | + | ||
| - | public void readData() | + | |
| - | { | + | |
| - | // описываем входной файловый поток | + | |
| - | FileInputStream inputFileStream; | + | |
| - | // описываем входной читатель из потока | + | |
| - | InputStreamReader inputFileReader = null; | + | |
| - | try { | + | |
| - | // сопоставляем входной поток файлу | + | |
| - | inputFileStream = new FileInputStream(" | + | |
| - | // и открываем его на чтение | + | |
| - | inputFileReader = new InputStreamReader(inputFileStream, | + | |
| - | } | + | |
| - | catch (FileNotFoundException ex) | + | |
| - | { | + | |
| - | System.out.println(ex); | + | |
| - | + | ||
| - | } | + | |
| - | catch (UnsupportedEncodingException ex) | + | |
| - | { | + | |
| - | System.out.println(ex); | + | |
| - | + | ||
| - | } | + | |
| - | // создаем читатель из файла | + | |
| - | BufferedReader inputFile = new BufferedReader(inputFileReader); | + | |
| - | // переменная, | + | |
| - | String str; | + | |
| - | // массив строк, в котором будет храниться результат деления нашей свежепрочитанной строки на куски | + | |
| - | String[] splitted = null; | + | |
| - | try { | + | |
| - | // пока можем читать из файда | + | |
| - | while ((str = inputFile.readLine()) != null) { | + | |
| - | // делим прочитанную строку на массив строк, по разделителю ";" | + | |
| - | splitted = str.split(";" | + | |
| - | } | + | |
| - | } catch (IOException ex) { | + | |
| - | System.out.println(ex); | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | ===== Работа с файлами, | + | |
| - | <code java> | + | |
| - | package ru.nsesc.lskywalker; | + | |
| - | import java.io.*; | + | |
| - | + | ||
| - | public class Reader { | + | |
| - | + | ||
| - | public void readData() | + | |
| - | { | + | |
| - | // описываем входной файловый поток | + | |
| - | FileInputStream inputFileStream; | + | |
| - | // описываем входной читатель из потока | + | |
| - | InputStreamReader inputFileReader = null; | + | |
| - | try { | + | |
| - | // сопоставляем входной поток файлу | + | |
| - | inputFileStream = new FileInputStream(" | + | |
| - | // и открываем его на чтение | + | |
| - | inputFileReader = new InputStreamReader(inputFileStream, | + | |
| - | } | + | |
| - | catch (FileNotFoundException ex) | + | |
| - | { | + | |
| - | System.out.println(ex); | + | |
| - | + | ||
| - | } | + | |
| - | catch (UnsupportedEncodingException ex) | + | |
| - | { | + | |
| - | System.out.println(ex); | + | |
| - | + | ||
| - | } | + | |
| - | // создаем читатель из файла | + | |
| - | BufferedReader inputFile = new BufferedReader(inputFileReader); | + | |
| - | // переменная, | + | |
| - | String str; | + | |
| - | // | + | |
| - | int c = 0; | + | |
| - | // массив строк, в котором будет храниться результат деления нашей свежепрочитанной строки на куски | + | |
| - | String[] splitted = null; | + | |
| - | try { | + | |
| - | // пока можем читать из файда | + | |
| - | while ((c = inputFile.read()) != -1) { | + | |
| - | if((char)c != ' | + | |
| - | { | + | |
| - | System.out.println((char) c); | + | |
| - | } | + | |
| - | else | + | |
| - | { | + | |
| - | break; | + | |
| - | } | + | |
| - | } | + | |
| - | } catch (IOException ex) { | + | |
| - | System.out.println(ex); | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | ===== Как выбрать только четные числа из строки? | + | |
| - | <code java> | + | |
| - | package ru.nsesc.lskywalker; | + | |
| - | import java.io.*; | + | |
| - | + | ||
| - | public class Reader { | + | |
| - | + | ||
| - | public void readData() | + | |
| - | { | + | |
| - | // описываем входной файловый поток | + | |
| - | FileInputStream inputFileStream; | + | |
| - | // описываем входной читатель из потока | + | |
| - | InputStreamReader inputFileReader = null; | + | |
| - | try { | + | |
| - | // сопоставляем входной поток файлу | + | |
| - | inputFileStream = new FileInputStream(" | + | |
| - | // и открываем его на чтение | + | |
| - | inputFileReader = new InputStreamReader(inputFileStream, | + | |
| - | } | + | |
| - | catch (FileNotFoundException ex) | + | |
| - | { | + | |
| - | System.out.println(ex); | + | |
| - | + | ||
| - | } | + | |
| - | catch (UnsupportedEncodingException ex) | + | |
| - | { | + | |
| - | System.out.println(ex); | + | |
| - | + | ||
| - | } | + | |
| - | // создаем читатель из файла | + | |
| - | BufferedReader inputFile = new BufferedReader(inputFileReader); | + | |
| - | // переменная, | + | |
| - | String str; | + | |
| - | // | + | |
| - | int c = 0; | + | |
| - | // массив строк, в котором будет храниться результат деления нашей свежепрочитанной строки на куски | + | |
| - | String[] splitted = null; | + | |
| - | try { | + | |
| - | // пока можем читать из файла | + | |
| - | while ((c = inputFile.read()) != -1) { | + | |
| - | if((char)c != ' | + | |
| - | { | + | |
| - | if(c % 2 != 0) | + | |
| - | { | + | |
| - | System.out.println(c); | + | |
| - | } | + | |
| - | } | + | |
| - | else | + | |
| - | { | + | |
| - | break; | + | |
| - | } | + | |
| - | } | + | |
| - | } catch (IOException ex) { | + | |
| - | System.out.println(ex); | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | ===== Запись текстовых данных в файл ===== | + | |
| - | + | ||
| - | <code java> | + | |
| - | package ru.nsesc.lskywalker; | + | |
| - | import java.io.*; | + | |
| - | + | ||
| - | public class Writer { | + | |
| - | public static void writeData(String text) | + | |
| - | { | + | |
| - | BufferedWriter writer = null; | + | |
| - | try | + | |
| - | { | + | |
| - | FileOutputStream outputFileStream = new FileOutputStream(" | + | |
| - | OutputStreamWriter outputFileWriter = new OutputStreamWriter(outputFileStream); | + | |
| - | writer = new BufferedWriter(outputFileWriter); | + | |
| - | writer.write(text); | + | |
| - | + | ||
| - | // ВАЖНО. Так как мы используем буферзованный вывод, то выходной поток необходимо закрывать, | + | |
| - | // сохраненные там данные были записаны на диск | + | |
| - | writer.close(); | + | |
| - | } | + | |
| - | catch (FileNotFoundException e) | + | |
| - | { | + | |
| - | e.printStackTrace(); | + | |
| - | } | + | |
| - | catch (IOException e) | + | |
| - | { | + | |
| - | e.printStackTrace(); | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | ====== Литература ====== | + | |
| - | |[[http:// | + | |
| - | + | ||
| - | |[[http:// | + | |
| - | + | ||
| - | ====== Задачи ====== | + | |
| - | + | ||
| - | ===== Задача 6 ===== | + | |
| - | + | ||
| - | Файл представляет собой набор произвольного количества строк разнообразной длины. Строки разбиты на слова пробелами. Требуется обработать содержимое файла таким образом, | + | |
| - | + | ||
| - | Пример: | + | |
| - | + | ||
| - | Дан файл | + | |
| - | < | + | |
| - | aaa bb ccccc dd e f | + | |
| - | gg hhh | + | |
| - | </ | + | |
| - | + | ||
| - | Заданная длина строки: | + | |
| - | + | ||
| - | < | + | |
| - | aaa | + | |
| - | bb | + | |
| - | ccccc | + | |
| - | dd e | + | |
| - | f gg | + | |
| - | hhh | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Задача 7 ===== | + | |
| - | Удалить из файла все лишние пробелы. Пробелы считаются лишними если: | + | |
| - | + | ||
| - | * Повторяются более чем 1 раз подряд | + | |
| - | * Стоят перед знаком препинания | + | |
| - | * Стоят после открывающей или перед закрывающей кавычками | + | |
| - | * Стоят после открывающей или перед закрывающей скобками | + | |
| - | + | ||
| - | ===== Списки ===== | + | |
| - | + | ||
| - | По приведенному наброску написать все упомянутые функции для реализации списков на языке Java. В результате программа должна как минимум уметь (на тройку): | + | |
| - | + | ||
| - | * создать список | + | |
| - | * добавить туда элемент | + | |
| - | * удалить элемент | + | |
| - | * вывести список на экран | + | |
| - | + | ||
| - | <code java> | + | |
| - | class List | + | |
| - | { | + | |
| - | private: | + | |
| - | int data; | + | |
| - | List next; | + | |
| - | public: | + | |
| - | // возвращает значение, | + | |
| - | int getData(); | + | |
| - | // устанавливает значение, | + | |
| - | void setData(int data) | + | |
| - | { | + | |
| - | this.data = data; | + | |
| - | } | + | |
| - | // возвращает ссылку на следующий элемент списка | + | |
| - | List getNext() | + | |
| - | {}; | + | |
| - | // устанавливает ссылку на следующий элемент | + | |
| - | void setNext(List next) | + | |
| - | {}; | + | |
| - | // добавляет элемент списка с данными data после элемента с номером index | + | |
| - | void addElement(int data, int index) | + | |
| - | {}; | + | |
| - | // добавляет элемент списка с данными data в конец списка | + | |
| - | void addElement(int data) | + | |
| - | { | + | |
| - | List tmp = new List(); | + | |
| - | | + | |
| - | | + | |
| - | List current = this.next; | + | |
| - | | + | |
| - | { | + | |
| - | next = next.getNext(); | + | |
| - | } | + | |
| - | | + | |
| - | }; | + | |
| - | // удаляет элемент с номером index | + | |
| - | void removeElement(int index) | + | |
| - | {}; | + | |
| - | // возвращает голову списка (первый элемент) | + | |
| - | List head() | + | |
| - | {}; | + | |
| - | // возвращает хвост списка (последний элемент) | + | |
| - | List tail() | + | |
| - | {}; | + | |
| - | // возвращает истину, | + | |
| - | boolean isEmpty() | + | |
| - | {}; | + | |
| - | // очищает список | + | |
| - | void emptyList() | + | |
| - | {}; | + | |
| - | // считает количество элементов в списке | + | |
| - | int size() | + | |
| - | {}; | + | |
| - | // выводит список на экран | + | |
| - | void print() | + | |
| - | {}; | + | |
| - | public static void main() | + | |
| - | { | + | |
| - | List list; | + | |
| - | // заполним список элементами | + | |
| - | for(int i = 0; i < 10; i++) | + | |
| - | { | + | |
| - | list.addElement(i); | + | |
| - | } | + | |
| - | // выведем его на экран | + | |
| - | list.print(); | + | |
| - | + | ||
| - | return 0; | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Первое задание на оценку ===== | + | |
| - | + | ||
| - | Реализовать программу, | + | |
| - | + | ||
| - | В программе должна присутствовать следующая функциональность: | + | |
| - | + | ||
| - | * Добавление книги в библиотеку | + | |
| - | * Выдача книги читателю | + | |
| - | * Получение книги обратно | + | |
| - | * Если книга просрочена, | + | |
| - | + | ||
| - | Пример главного класса программы: | + | |
| - | + | ||
| - | <code java> | + | |
| - | public class Ex { | + | |
| - | public static void main(String[] argc) { | + | |
| - | + | ||
| - | // Количество книжек около 10 штук, в качестве примера напишу лишь две | + | |
| - | Book book1 = new Book(); | + | |
| - | // задание знаений с помощью сеттеров | + | |
| - | book1.setAuthor(" | + | |
| - | book1.setTitle(" | + | |
| - | book1.setYear(2011); | + | |
| - | book1.setPrice(500); | + | |
| - | // задание значений полей с помощью конструктора (не обязательно) | + | |
| - | Book book2 = new Book(" | + | |
| - | + | ||
| - | Library lib = new Library(); | + | |
| - | + | ||
| - | lib.addBook(book1); | + | |
| - | lib.addBook(book2); | + | |
| - | + | ||
| - | lib.giveToReader(" | + | |
| - | lib.giveToReader(" | + | |
| - | lib.giveToReader(" | + | |
| - | + | ||
| - | lib.getBack(" | + | |
| - | + | ||
| - | lib.getBack(" | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | ===== Второе задание на оценку ===== | + | |
| - | + | ||
| - | Написать программу, | + | |
| - | + | ||
| - | - Список преподавателей | + | |
| - | - Список предметов | + | |
| - | - Список соответствия преподавателя предмету (один преподаватель может вести несколько предметов) | + | |
| - | - Написать методы: | + | |
| - | - Вывести список преподавателей с теми предметами, | + | |
| - | - Вывести список предметов < | + | |
| - | - Вывести преподавателя с наибольшим количеством предметов | + | |
| - | + | ||
| - | <code java> | + | |
| - | HashMap< | + | |
| - | // где-то тут заполняется карта teachers | + | |
| - | Iterator it = teachers.entrySet().iterator(); | + | |
| - | while (it.hasNext()) { | + | |
| - | Map.Entry pairs = (Map.Entry)it.next(); | + | |
| - | System.out.println(pairs.getKey() + " = " + pairs.getValue()); | + | |
| - | it.remove(); | + | |
| - | } | + | |
| - | </ | + | |