Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 18.05.2013
Сообщений: 67

Передача аргументов

05.10.2016, 11:36. Показов 1117. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package src;
 
public class TIPDANNIX {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
if ( args[0].equals( "-en" ))
{
    System.out.println("Опция для английского языка" );
}
 
else if(args[0].equals("-es"))
{
    System.out.println("Опция для Испанского языка");
}
 
else System.out.println("Неизвестная опция");
 
    }
    
}

Выдается вот такая вот ошибка, как исправить?
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException : 0
at src.TIPDANNIX.main(TIPDANNIX.java:7)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.10.2016, 11:36
Ответы с готовыми решениями:

Передача аргументов JVM
Здравствуйте. Есть коммерческий клиент-серверный продукт, написанный на Java SE. Количество клиентов может быть от 1 до бесконечности...

Передача аргументов, ошибка в коде
Добрый вечер. Подскажите где скачать этот zip-архив с исходниками по данной книге(Майк МакГрат "Java Программирование для...

Создание объекта и передача аргументов в конструктор
Всем привет, такой вопрос что делает следующая строчка : new NewClass(5); Прошу обратить внимание не вот этот код: NewClass obj = new...

7
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
05.10.2016, 12:32
проверить args.length, очевидно
0
0 / 0 / 1
Регистрация: 18.05.2013
Сообщений: 67
05.10.2016, 13:19  [ТС]
не понимаю о чем речь, где об этом можно прочитать?
и если это о длине аргумента, то как мне ее проверить?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
05.10.2016, 13:23
if (args.length==2) {
читаем аргументы по индексу 0 и 1;

}
1
0 / 0 / 1
Регистрация: 18.05.2013
Сообщений: 67
05.10.2016, 14:43  [ТС]
странно но либо в примере книги сделали ошибку или я чего то не понимаю, там этого нет
0
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
05.10.2016, 15:06
Цитата Сообщение от beckham77 Посмотреть сообщение
странно но либо в примере книги сделали ошибку или я чего то не понимаю, там этого нет
Просто автор книги не рассчитывал, что программу, расчитанную на чтение параметров, будут запускать без этих самых параметров. Поэтому и не проверяет, есть ли параметры. Хотя это глупо. В любом случае нужно проверять перед использованием.

А так, получается, вы говорите программе "Дай-ка мне аргумент с нулевым индексом. И если он -en, то ..."
Она вам вполне закономерно и отвечает, что аргумента с нулевым индексом не существует. Вообще аргументов не существует.

Вы запускаете так:
Java
1
java -jar myprogram.jar
А рассчитано на такое:
Java
1
java -jar myprogram.jar -en
1
0 / 0 / 1
Регистрация: 18.05.2013
Сообщений: 67
10.10.2016, 12:11  [ТС]
я так понял, я не задал размерность массива, а ее нужно задавать всегда!
0
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
10.10.2016, 12:32
Нет. Здесь ее задавать не нужно.

Причина не в этом. Вы можете передавать параметры при запуске, а можете не передавать. Параметры считываются в массив args. Дальше вы проверяете
Java
1
args[0].equals( "-en" )
Т.е. стучитесь к элементу массива с индексом 0.
Но если вы при запуске программы не указали параметры - массив пуст. У него нет элемента с индексом 0. Но вы все равно к нему пытаетесь достучаться. И естественно получаете ArrayIndexOfBoundException.

Смысл таков, что нужно сначала проверить, есть ли этот элемент с индексом 0 или нет. И уже потом пытаться его получить или с чем-то сравнить.

Должно выглядеть как-то так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package src;
 
public class TIPDANNIX {
 
    public static void main(String[] args) {
    // TODO Auto-generated method stub
        if (args.length > 0) {   // Вот здесь проверяем, пустой массив или нет
            if ( args[0].equals( "-en" ))
            {
                 System.out.println("Опция для английского языка" );
            }
            else if(args[0].equals("-es"))
            {
                 System.out.println("Опция для Испанского языка");
            }
            else System.out.println("Неизвестная опция");
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2016, 12:32
Помогаю со студенческими работами здесь

Передавание по желанию аргументов
Недавно столкнулся с Object... public Gun(String name, int type, int typeGun, int slot, Object... nbt) Его можно передавать по...

Как создать список аргументов
столкнулся с ситуацией, есть объект с 3 массивами private int a = {1,2,3,4}; private int b = {1,2,3,4}; private int c = {1,2,3,4}; ...

Метод с переменным числом аргументов
И снова здравствуйте! Необходимо реализовать поиск объекта в массиве который соответствует некоторому диапазону параметров. Т.е....

Переменное количество аргументов в методе
Всем привет. Делаю универсальный метод для создания SOAP сообщений для веб-сервиса и передаю в метод дважды разный набор параметров - имена...

Работа аргументов в методе и конструкторе
Добрый день!Буду благодарен, если кто-нибудь пошагово объяснит, как аргументы в методе передаются в конструктор, что-то меняют там и выдают...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru