Ошибка запуска или компиляции этого кода Java ... Очень запутанная программа не запустится - PullRequest
0 голосов
/ 17 марта 2012

Эта программа не будет работать на NetBeans или компилироваться в терминале ... Я не думаю, что у меня есть какие-либо ошибки в самой себе .. Эта программа должна отображать область круга, там не может быть недопустимого ввода (буквы, & ^ #, .. и т.д.)

Пожалуйста, и спасибо за ваше время;)

 **import java.util.Scanner; 


    /**
     *
     * @author Omar Sugule
     */
    public class AreaCircle {


        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
    Scanner sc = new Scanner(System.in); // read the keyboard
    try {
        double r = sc.nextDouble();
    }
    catch( NumberFormatException e ) {
        System.err.println("Invalid Input, please enter a number");
        //put a message or anything you want to tell the user that their input was weird.
    }

    System.out.println("This program will calculate the area of a circle");

    System.out.println("Enter radius:");//Print to screen

    double r = sc.nextDouble(); // Read in the double from the keyboard






    double area = (3.14 *r * r); 
    String output = "Radius: " + r + "\n";
    output = output + "Area: " + area + "\n";
    System.out.println("The area of the circle  is " + area);

        }
    }**

Ответы [ 3 ]

1 голос
/ 17 марта 2012

Вы знаете, что это не сработает:

try {
    double r = sc.nextDouble();
}
catch( NumberFormatException e ) {
    System.err.println("Invalid Input, please enter a number");
    //put a message or anything you want to tell the user that their input was weird.
}

, поскольку вы объявляете r из блока try, он виден только внутри блока try и совершенно невидим в других местах.(это называется выходом из области видимости).

Вместо этого:

  • Объявите double r перед блоком try и инициализируйте его 0.0:
    double r = 0.0; // corrected as per mfrankli
  • Попробуйте получить вход в блок try
  • заключить все в цикл while и продолжить цикл до тех пор, пока ввод не будет действительным
  • не повторно объявлять r послеБлок try.
  • работает над улучшением форматирования вашего кода, в частности, чтобы получить равномерный отступ кода.Это облегчит вам и нам отладку кода lot .
  • Работайте над тем, чтобы задавать лучшие вопросы здесь.Обычно хорошей идеей является предоставление всей информации, необходимой, чтобы помочь вам в первоначальном вопросе.Ваш не учитывает много вещей, заставляя нас догадываться, что может привести к неправильным или запутанным ответам.
0 голосов
/ 17 марта 2012

Удалите звездочки в начале и конце файла.В остальном все в порядке, за исключением необходимости нажимать ввод, прежде чем вводить какой-либо ввод.

0 голосов
/ 17 марта 2012

Я только что опробовал вашу программу, и единственная реальная проблема, которую я вижу, состоит в том, что у вас есть этот бит в начале, который ждет ввода пользователя:

    try {
        double r = sc.nextDouble();
    }
    catch( NumberFormatException e ) {
        System.err.println("Invalid Input, please enter a number");
        //put a message or anything you want to tell the user that their input was weird.
    }

Поскольку этот код приходит до , программа выдает какой-либо вывод, в результате программа просто зависает; пользователю не очевидно, что он должен вводить число. (И действительно, им не нужно беспокоиться о том, сколько цифр они вводят, поскольку программа просто предлагает им ввести еще один номер чуть позже:

    double r = sc.nextDouble(); // Read in the double from the keyboard

и именно этот второй фактически используется.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...