Возникли проблемы с моей Java-программой?

РЕДАКТИРОВАТЬ 1:

программа должна вывести это: java CircleBugs 1,2 0,6 r = 1,2, t = 0,6 c = 7,5398223686155035 a = 4,523893421169302 x = 0,9904027378916139, y = 0,6775709680740424

Моя ошибка:

Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 0 в debug.Debug.main (Debug.java:24) C: \ Users \ User \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor- snippets \ run.xml: 53: Java вернула: 1 BUILD FAILED (общее время: 0 секунд)

У меня возникла проблема с отладкой этой программы:

public static void main(String[] args) {

        double t = Double.parseDouble(args[0]); 
    int r = Integer.parseInt(args[]); 

    System.out.println("r = " + r + ",  t = " + t); //Added the ";" to close the line of code

    double c = 2 * Math.PI * r;         
            double A = Math.PI * r * r; 

    double x = r * Math.cos(Math.toRadians(t));      //fixed    
            double y = r * Math.sin(Math.toRadians(t));     //fixed

    System.out.println("c = " + c ); 
    System.out.println("A = " + A ); 
    System.out.println("x = " + x + ", " + "y = " + y );  
   } 

Что говорится в сообщении об ошибке?

cpp beginner 07.04.2018 12:45
import static java.lang.Math.*;
Mick Mnemonic 07.04.2018 12:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
2
106
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Массив args пуст и вызывает эту ошибку. Проблема в том, что вы не даете своей программе никаких входных данных, поэтому вы пытаетесь использовать parseDouble(args[0]) с пустым массивом.

Используйте что-то вроде этого:

Scanner sc = new Scanner(System.in);
double t = sc.nextDouble();
int r = sc.nextInt();

Также вам следует использовать такие методы, как:

Math.cos(Math.toRadians(t))
Math.sin(Math.toRadians(t))

но я получаю эту ошибку // Исключение в потоке «main» java.lang.ArrayIndexOutOfBoundsException: 0 в debug.Debug.main (Debug.java:20)

Kyle Whale 07.04.2018 12:53

А каков ваш вклад? Вероятно, вы не вводите в свою программу какие-либо данные, а args пуст.

yassadi 07.04.2018 12:55

что там происходит, то завершенная программа должна вывести: java CircleBugs 1.2 0.6 r = 1.2, t = 0.6 c = 7.5398223686155035 a = 4.523893421169302 x = 0.9904027378916139, y = 0.6775709680740424

Kyle Whale 07.04.2018 13:02

Я отредактировал свой ответ.

yassadi 07.04.2018 13:05

По-прежнему возникают эти ошибки, и он продолжает возвращаться к строкам синтаксического анализа // double t = Double.parseDouble (args [0]); int r = Integer.parseInt (args [0])

Kyle Whale 07.04.2018 13:08

Как вы запускаете свою программу?

yassadi 07.04.2018 13:08

Я использую blueJ, но даже в netbeans ide я сталкиваюсь с этой ошибкой

Kyle Whale 07.04.2018 13:10

Вам нужно дать вашей программе какой-то вклад. Я написал вам пример в моем отредактированном ответе, а затем вы можете запустить свою программу через консоль.

yassadi 07.04.2018 13:11

Хорошо, я добавил код, который вы предложили, хотя C + P изменил имена переменных. Теперь программа получает ввод от пользователя, но сразу после ее завершения происходит сбой и не выводятся необходимые числа.

Kyle Whale 07.04.2018 13:18

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

yassadi 07.04.2018 13:19

Вы должны использовать методы Math.cos() и Math.sin().

double x = r * Math.cos(t);
double y = r * Math.sin(t);

При использовании Double.parseDouble(args[0]) предполагается, что вы передаете значения в командной строке для значений этого аргумента, в противном случае массив пуст (так что вы получаете indexoutofboundexception при вызове первого элемента из пустого массива). Так что просто измените код вот так

double t = Double.parseDouble(args[0]); 
int r = Integer.parseInt(args[1]);

И в командной строке выполните это.

java test 5 4 //5 in place of t and 4 in place of r

Я сохранил свой файл как test.java, поэтому замените test именем вашего файла и запустите.

Другие вопросы по теме