Ответы:
> 1. Я не могу заставить цикл ввода работать, что лучше для этого делать.
Я бы предпочел простой цикл while вместо do {} while ... и поместил бы условие в while ... В моем примере это выглядело:
, пока прочитанное число не является сигналом окончания и счетчик ниже предела: do.
> 2. Каким будет тип объекта для метода чтения? Двойной [] или ArrayList?
ArrayList, однако я настоятельно рекомендую вам использовать интерфейс List (java.util.List). Хорошей практикой ОО является программирование на интерфейс, а не на реализацию.
> 2.1Как я объявляю метод-тип как arraylist?
См. Код ниже.
> 2,2. Как предотвратить сохранение в массиве более 1000 значений?
Добавляя это ограничение в условие while.
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
public class InputTest{
private int INPUT_LIMIT = 10000;
public static void main( String [] args ) {
InputTest test = new InputTest();
System.out.println("Start typing numbers...");
List list = test.readRange( 2.0 );
System.out.println("The input was " + list );
}
/**
* Read from the standar input until endSignal number is typed.
* Also limits the amount of entered numbers to 10000;
* @return a list with the numbers.
*/
public List readRange( double endSignal ) {
List<Double> input = new ArrayList<Double>();
Scanner kdb = new Scanner( System.in );
int count = 0;
double number = 0;
while( ( number = kdb.nextDouble() ) != endSignal && count < INPUT_LIMIT ){
System.out.println( number );
input.add( number );
}
return input;
}
}
Заключительные замечания:
Желательно иметь «методы экземпляра», чем методы класса. Таким образом, при необходимости «readRange» может обрабатываться подклассом без необходимости изменять сигнатуру, поэтому в примере я удалил ключевое слово «static» и создал экземпляр класса «InputTest»
В стиле Java-кода имена переменных должны идти в случае cammel, как в "endSignal", а не "end_signal"