Пример консольного java-приложения

Лабораторная работа №1. Разработка консольных java-приложений

Цель работы:ознакомление с операторами Java, предназначенными для работы с консолью, операциями, литералами, различными типами операторов, разработка консольного приложения для реализации простейшего приложения с использованием массивов, строк и файлов.

Требования и рекомендации к выполнению задания:

1. проанализировать полученное задание, выделить информационные объекты и действия;

2. разработать программу с использованием требуемых типов и операторов.

 

Консольное приложение Java представляет собой откомпилированный класс, содержащий точку входа.

 

Рассмотрим простой пример:

public class First {

public static void main(String[] args) {

System.out.print ln ("Первая программа на Java!");

}

}

 

Здесь класс First используется только для того, чтобы определить метод main(), который и является точкой входа и с которого начинается выполнения программы интерпретатором Java. Метод main() содержит аргументы-параметры командной строки String[] args в виде массива строк и является открытым (public) членом класса. Это означает, что метод main() виден и доступен любому классу. Ключевое слово static объявляет методы и переменные класса, используемые для работы с классом в целом, а не только с объектом класса. Символы верхнего и нижнего регистров в Java различаются, чем Java напоминает языки C/C++ и PHP.

Вывод строки «Первая программа на Java!» в примере осуществляет метод println() (ln – переход к новой строке после вывода) свойства out класса System, который доступен в программе автоматически вместе с пакетом java.lang. Приведенную программу необходимо поместить в файл, имя которого совпадает с именем класса и с расширением java. Простейший способ компиляции написанной программы – вызов строчного компилятора:

javac First.java.

При успешной компиляции создается файл First.class. Этот файл можно запустить на исполнение из командной строки с помощью интерпретатора Java следующим образом:

java First

Для разработки программы возможно использование и специальных средств разработчика.

  • NetBeans IDE – свободная интегрированная среда разработки для всех платформ Java – Java ME, Java SE и Java EE. Пропагандируется Sun Microsystems, разработчиком Java, как базовое средство для разработки ПО на языке Java.
  • Eclipse IDE – свободная интегрированная среда разработки для Java SE, Java EE и Java ME. Пропагандируется IBM, одним из важнейших разработчиков корпоративного ПО, как базовое средство для разработки ПО на языке Java.
  • IntelliJ IDEA – среда разработки для платформ Java SE, Java EE и Java ME. Разработчик – компания JetBrains. Распространяется в двух версиях: свободной бесплатной (Community Edition) и коммерческой проприетарной (Ultimate Edition).
  • JDeveloper – среда разработки для платформ Java SE, Java EE и Java ME. Разработчик — компания Oracle.
  • JBuilder – профессиональная интегрированная среда разработки (IDE) на языке Java, основанная на программной среде с открытыми исходными кодами Eclipse.
  • BlueJ – Среда разработки программного обеспечения на языке Java, созданная в основном для использования в обучении, но также подходящая для разработки небольших программ.

 

Класс System

Класс System содержит набор полезных статических методов и полей системного уровня. Экземпляр этого класса не может быть создан или получен.

Наиболее широко используемой возможностью, предоставляемой System, является стандартный вывод, доступный через переменную System.out. Стандартный вывод можно перенаправить в другой поток (файл, массив байт и т.д., главное, чтобы это был объект PrintStream, смотри документацию JSDK: http://docs.oracle.com/javase/6/docs/api/ ):

 

public static void main(String[] args) {

System.out.println("Study Java");

try {

PrintStream print = new PrintStream(new

FileOutputStream("d:\\file2.txt"));

System.setOut(print);

System.out.println("Study well");

} catch(FileNotFoundException e) {

e.printStackTrace();

}

}

 

При запуске этого кода на экран будет выведено только:

Study Java.

И в файл "d:\file2.txt" будет записано:

Study well.

Аналогично могут быть перенаправлен стандартный ввод System.in – вызовом System.setIn(InputStream) и поток вывода сообщений об ошибках System.err – вызовом System.setErr (по умолчанию все потоки – in, out, err – работают с консолью приложения).

 

Класс String

Класс String содержит основные методы для работы со строками:

  • concat(String s) или + – слияние строк;
  • equals(Object ob), equalsIgnoreCase(String s) – сравнение строк с учетом и без учета регистра;
  • compareTo(String s), compareToIgnoreCase (String s) – лексикографическое сравнение строк с учетом и без учета регистра;
  • contentEquals(StringBuffer ob) – сравнение строки и содержимого объекта типа StringBuffer;
  • charAt(int n)– извлечение из строки символа с указанным номером (нумерация с нуля);
  • substring(int n, int m)- извлечение из строки подстроки длины m-n, начиная с позиции n;
  • length() – определение длины строки;
  • valueOf(объект) – преобразование примитивного объекта к строке;
  • toUpperCase() / toLowerCase() – преобразование всех символов вызывающей строки в верхний/нижний регистр;
  • replace(char с1, char с2) – замена в строке всех вхождений первого символа вторым символом;
  • getBytes(параметры), getChars(параметры) – извлечение символов строки в виде массива байт или символов.

В следующем примере массив символов и целое число преобразуются в объекты типа String с использованием методов этого класса.

 

public class DemoString {

public static void main(String[] args) {

char s[] = { 'J', 'a', 'v', 'a' };

int i = 2;

 

// комментарий содержит результат выполнения кода

String str = new String(s); // str ="Java"

i = str.length(); // i=4

String num = String.valueOf(2); // num="2"

str = str.toUpperCase(); // str="Java"

num = str.concat(num); // num="Java2"

str = str + "C";// str="JavaC";

char ch = str.charAt(2); // ch='V'

i = str.lastIndexOf( 'A' ); // i=3 (-1 если отсутвствует )

num = num.replace('2', 'H'); // num="JavaH"

i = num.compareTo(str); // i=5 ( между символами 'H' и ' С ')

str.substring(0, 3).toLowerCase(); // java

}

}

 

Пример консольного java-приложения

Задание: Ввести n строк с консоли. Вывести на консоль строки и их длины, упорядоченные по возрастанию.

Решение:

import java.io.IOException;

import java.util.InputMismatchException;

import java.util.Scanner;

public class Main

{

public static void main(String[] args)

{

int n = 0;

while ( true ) // ввод числа строк

{

System.out.println("Введите число строк");

Scanner sc1 = new Scanner(System. in );

try

{

n = sc1.nextInt();

break;

}

catch(InputMismatchException fg)

{

// если введенное значение не является числом

System.out.print("Вы ввели не число. " );

}

}

// создание массива строк

String[] str = new String[n];

Scanner sc2 = new Scanner(System.in);

for (int i = 0; i < n; i++)

{

System. out.println( " Введите строку №" + (i+1));

str[i] = sc2.nextLine();

}

//сортировка массива строк по длине

for ( int i = 0; i < str. length -1; i++)

{

for (int j = i+1; j < str.length; j++)

{

if (str[i].length()<str[j].length())

{

String temp = str[i];

str[i] = str[j];

str[j] = temp;

}

}

}

int maxlength = str[0].length();

System.out.println("Строки в порядке убывания длины:");

for ( int i = 0; i < str. length ; i++)

{

System.out.print(str[i]);

for (int j = 0; j < maxlength - str[i].length(); j++)

System.out.print(" ");

System. out.println( " её длина = " + str[i].length());

}

}

}