Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная
  2. Практическая информатика
  3. Глава 12 Программирование и интернет

Массивы и ввод данных

Массивы в языке Java очень похожи на массивы в Ruby, но все их элементы обязаны иметь один и тот же тип. Другими словами, возможен массив целых чисел или массив строк, но недопустим массив, содержащий и то и другое. Как и все другие переменные, массив должен быть объявлен до своего использования.

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

Ruby Java
Объявление массива
myArray = []
int myArray[];
Выделение памяти
myArray = Array.new(10)
myArray = new int[10];
Инициализация массива
myArray[0] = 10 myArray[5] = 100
myArray[0] = 10;
myArray[5] = 100;
Объявление с инициализацией
myArray = [1,2,3,4]
myArray[] = {1,2,3,4};
Длина массива
i = myArray.length
int i = myArray.length;
Доступ к элементу массива
i = myArray[0]
int i = myArray[0];
Выход за границы массива
i = myArray[1000]
# i = nil
int i = myArray[1000];
// ошибка

Язык Java допускает совмещение объявления массива с выделением памяти:

int myArray[] = new int[10];

Аналогично Ruby язык Java поддерживает работу с многомерными массивами. К элементам таких массивов можно добраться, последовательно указывая их индексы. Например,

int a[][] = { {1,2,3},
 {4,5,6},
	 };
// либо 
int b[] = new int [2][3];
b[0][0] = 1; b[0][1] = 2; b[0][2] = 2;
b[1][0] = 4; b[1][1] = 5; b[1][2] = 6;

Сравните это с фрагментом программы на Ruby:

a = [ [1, 2, 3],
 [4, 5, 6],
 ]
// либо 
b[0][0] = 1; b[0][1] = 2; b[0][2] = 2;
b[1][0] = 4; b[1][1] = 5; b[1][2] = 6;

Ввод данных в языке Java устроен значительно сложнее, чем в Ruby. Кроме того, при вводе возможно возникновение так называемых исключительных ситуаций (Exception), поэтому программы, использующие ввод данных, обязаны содержать фрагменты кода, отвечающие за обработку исключительных ситуаций. В простейших случаях это сводится к добавлению конструкции throws Exception.


Пример
Приведем программу, демонстрирующую ввод данных с клавиатуры с использованием класса BufferedReader.

import java.io.*;

class TestInput {
 public static void main(String[] args)
 throws Exception{
 BufferedReader r = new BufferedReader(
 new InputStreamReader(System.in));

 int a;
 double x;
 String str;

 System.out.print("Ведите строку: ");
 str = r.readLine();
 System.out.print("Введите целое число: ");
 a = Integer.parseInt(r.readLine());
 System.out.print("Введите действительное" +
 " число: ");
 x = Double.parseDouble(r.readLine());

 System.out.println("str=" + str + ", a=" +
 a + ", x=" + x);
 }
}

Ключевое слово import служит для подключения дополнительных библиотек. В нашем примере подключается пакет классов, отвечающий за ввод/вывод (input/output). BufferedReader создает входной поток данных для получения информации с клавиатуры. Метод readLine, знакомый нам по Ruby, возвращает введенную строку, а заменой методов to_i и to_f (преобразований строки в числа) в языке Java являются:

  • Integer.parseInt(str) - для целых чисел;
  • Double.parseDouble(str) - для действительных чисел.

После запуска этой программы ввод каждой "порции" данных завершается нажатием клавиши Enter.

Перекрёстные ссылки книги для Массивы и ввод данных

  • Переменные и типы
  • Вверх
  • Методы

Book navigation

  • Содержание
  • Глава 1 Основы информатики
  • Глава 2 Операционные системы и сети
  • Глава 3 Графика на компьютере
  • Глава 4 Обработка текста
  • Глава 5 Основы языка HTML
  • Глава 6 Динамический HTML
  • Глава 7 Простейшие вычисления
  • Глава 8 Системы компьютерной алгебры
  • Глава 9 Модели и программирование
  • Глава 10 Логическое программирование
  • Глава 11 Введение в ООП
  • Глава 12 Программирование и интернет
    • От Ruby к Java
    • Переменные и типы
    • Массивы и ввод данных
    • Методы
    • Операторы ветвления и циклы
    • Библиотеки классов и примеры программ
    • Понятие об аплетах
    • Элементы языка JavaScript

Последние материалы

  • Утилита sensors
    17 hours 38 minutes ago
  • Сканер Rkhunter
    1 week 1 day ago
  • Программа resize2fs
    1 week 6 days ago
  • Аудиопроигрыватель QMMP
    2 weeks 5 days ago
  • Программа Timeshift
    3 weeks 4 days ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru