Ошибка в договоренности Java ArrayIndexOutOfBoundsException

Хорошие, я учусь программировать в Java и выполнив код:

package useargumeny;

public class UseArgumeny {
    public static void main(String[] args) {
        System.out.print("Hi, ");
        System.out.print(args[0]);
        System.out.print(".how are you");
    }
}

Составитель бросает мне следующего

error:package useargumeny:Exception in thread "main" java.lang. ArrayIndexOutOfBoundsException: 0 Hi, at useargumeny. UseArgumeny.main (UseArgumeny.java:7) C:\Users\probook\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 BUILD FAILED (общее количество украло: 0 seconds)

3
задан 29.01.2016, 00:50
3 ответа

У тебя есть здесь args[0] что-то названное Я упорядочиваю , который является более или менее последовательностью данных о том же типе accesables из-за индекса. И отдельно args - специальная Договоренность программ в java, где могут проходить параметры с другого места.

того, за чем оно последует здесь, состоит в том, что, когда ты выполняешь твой код с IDE (netbeans в твоем случае) не посылается никакой аргумент в твою программу и поэтому показывает ее excepciГіn ArrayIndexOutOfBoundsException, которые показывают, что ты просишь у него элемент, не содержавший в твоей договоренности

, аналогию реального мира, был бы:

Твоя мать ты посылает покупать вещи супер, когда ты возвращаешься домой, просит у тебя изменение, но ты потратил все деньги, так что ты говоришь , я ты это не могу давать в ves просто давания ему изменения.

, Чтобы выполнять твою программу, открывает консоль, и разместись в твоей папке, где производится твой файл .class и пишет, что

java UseArgumeny David

Это заставит функционировать пополам твоя программа, так как он сейчас получает аргумент, и без проблемы он это показывает.

, Чтобы оплачивать случай, что не послали тебе аргументы, использует решение if

System.out.print("Hi, ");
if(args.length > 0){
    System.out.print(args[0]);
}
System.out.print(".how are you");
3
ответ дан 24.11.2019, 14:56

Просто у договоренности args нет стоимости получать args[0]:

 public static void main(String[] args) {
            ...
            System.out.print(args[0]);
            ...           
        } 

ты был бы должен санкционировать этот случай.

 public static void main(String[] args) {
            ...
            if (args.length > 0) {
            System.out.print(args[0]);
            }else{
            System.out.print("args esta vació!");
            } 
            ...           
        } 
1
ответ дан 24.11.2019, 14:56

Он, из-за которого ты не санкционируешь, если array args у него есть элементы. Твоя программа удастся, если ты добавишь аргумент линии команды, когда ты это выполняешь:

$ java UseArgumeny.class rnrneverdies
Hi, rnrneverdies.how are you

Чтобы это решать ты должен санкционировать, если есть аргументы используя args.length какой-то формы, и если их нет, например, ты можешь давать другое сообщение или то, в чем ты нуждаешься.

package useargumeny;

public class UseArgumeny {
    public static void main(String[] args) {
        if (args.length > 0) {
            System.out.print("Hola, ");
            System.out.print(args[0]);
            System.out.print(" ¿Como estas?");
        } else {
            System.out.print("Quien eres tu?");
        } 
    }
}
1
ответ дан 24.11.2019, 14:56
  • 1
    Спасибо за ответ. Однако сейчас появляется следующее: run: Ошибка: не находился или загрузил главный класс useargumeny. UseArgumeny C:\Users\probook\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 BUILD FAILED (общее количество украло: 0 seconds) – David Castro P 29.01.2016, 00:31