2013-09-13 3 views
2

Я только начал изучать Java (я тоже программист на C# .NET). Я пытаюсь получить несколько пользовательских входов и добавить их в массив. После этого я вычисляю среднее значение из заданных значений.BlueJ пытается запустить мою Java-программу навсегда

По какой-то причине BlueJ попытается запустить мою программу Java навсегда. Значение: оно будет показывать индикатор выполнения и не откроет окно консоли.

Я не уверен, что это что-то не так с моим кодом или BlueJ, потому что я никогда не сталкивался с такой проблемой, как раньше.

Вот мой код:

import java.util.Scanner; 

public class Problem22 { 
    public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 

    int inputs = 2; 
    int[] values = new int[3]; 

    while (inputs > -1) { 
     values[inputs] = scanner.nextInt(); 

     inputs--; 
    } 

    System.out.println(averageValue(values)); 
    } 

    private static int averageValue(int[] values) { 
    int sum = 0; 

    for (int i : values) { 
     sum += i; 
    } 

    return (sum/values.length); 
    } 
} 

Пожалуйста, помогите мне попытаться найти решение.

+0

Нет класса? или это просто фрагмент, вы можете вставить полный код? –

+0

@Eran Medan, обновил сообщение с полным кодом – Rohan

+0

Спасибо, код компилируется для меня в Intellij IDEA, кажется, действительно Java. Так что это проблема с bluej itelf себя (например, ошибка?). Вы уверены, что не просто ждать ввода типа ввода в консоль или что-то еще? –

ответ

4

Кажется, что в BlueJ вам необходимо предоставить выход, прежде чем запрашивать ввод. Это довольно странная ошибка.

Подробнее:

http://www.bluej.org/help/faq.html#hangoninput

+1

Это не ошибка. Окно терминала не будет отображаться автоматически до тех пор, пока не произойдет выход, вот и все. Если вы откроете окно терминала вручную, что тривиально, проблем нет. – davmac

0

Код компилируется просто отлично для меня в IntelliJ IDEA, а также отлично работает. поэтому я бы предположил, что это ошибка BlueJ.

Вот пример ввода и вывода после запуска его (нажимая клавишу ВВОД после каждой строки ввода)

3 
4 
5 
4 

(что означает, кстати, ваш код работает правильно, 4 средняя 3,4,5 ...)

Какую версию BlueJ вы используете? Я предполагаю перезапуск BlueJ или даже ваша машина не работает?

+0

Я попытался перезагрузить свою машину и BlueJ, похоже, что она не работает. – Rohan

0

Ваш код работает для меня в Eclipse, но я должен был понять, что я должен был сделать, ввести три Интс.

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

Ссылка на мою версию кода с подсказками:

https://gist.github.com/kaydell/6552282

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

0

Окно терминала открывается только при выходе. Программа Th запросила только для ввода. Поэтому окно терминала не открывается. Замените ваш фрагмент следующим образом:

`while (inputs > -1) 
{ 
System.out.println("Input number - "+inputs); 
    values[inputs] = scanner.nextInt(); 
    inputs--; 
}` 

Надеюсь, вы увидите окно терминала.

Смежные вопросы