khajak80 Ответов: 2

Может ли кто - нибудь помочь мне решить эту ошибку?


import java.math.*;

public class Encryption
{
   public static void main(String[] args)
   {
       //declaring BigInteger variables for message,e and n
       BigInteger message,e,n,cipher;
      
       //creating BigInteger objects for message , e and n
       message=new BigInteger(args[0]);
       e=new BigInteger(args[1]);
       n=new BigInteger(args[2]);
      
       //finding the cipher text value using modPow method
       cipher=message.modPow(e,n);
      
       //printing the cipher text
       System.out.println("Message: "+args[0]);
       System.out.println("e      : "+args[1]);
       System.out.println("n      : "+args[2]);
       System.out.println("\nAfter Encryption, Cipher Text: "+cipher);
   }
}


У меня есть ошибка в строке 14 для message=new BigInteger(args[0]);

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at learnprogramming.Encryption.main(Encryption.java:14)


Что я уже пробовал:

Я попробовал использовать следующий код после void main
if (args.length != 3)
        {
            System.out.println("java Encrypt message e n");
            System.exit(0);
        }

но это не дает мне необходимых зашифрованных выходных номеров. Он просто печатает:
java Encrypt message e n



Может ли кто-нибудь помочь мне решить эту ошибку?

2 Ответов

Рейтинг:
19

OriginalGriff

Симпель: вы не указали никаких параметров, поэтому нет никаких аргументов для обработки.
Нет аргументов == пустой массив == ошибка при попытке использовать какой-либо элемент вообще.

Добавьте проверку на "отсутствие параметров", и когда это сработает, добавьте параметры к вашему запуску.


khajak80

Спасибо Вам за Ваш быстрый ответ!

Рейтинг:
10

Patrice T

Цитата:
ошибка в строке 14 для сообщения=new BigInteger(args[0]);
Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: индекс 0 выходит за пределы длины 0 при обучении программированию.Encryption.main(Encryption.java:14)

Сообщение об ошибке говорит вам, что ваш код был вызван без параметра, когда ему нужно 3 параметра.
Единственное решение-вызвать этот код с требуемыми параметрами.
Цитата:
но это не дает мне необходимых зашифрованных выходных номеров. Он просто печатает:
Ява шифровать сообщения электронной п

Этот код делает именно то, что он должен делать, но он не может создавать пропущенные значения.

Это все равно, что пытаться использовать машину без ключей, если вы не вор, это может усложниться.
Это все равно что пытаться решить c = a + b не зная a и b.

Единственное возможное решение-вызвать этот код с 3 параметрами.


khajak80

Спасибо за Ваше очень ясное объяснение. Это был глупый ход с моей стороны.