回答:
大于1.我似乎无法让输入循环得以解决,这样做的最佳做法是什么.
我宁愿有一个简单的while循环而不是do {} while …并将条件放在while …在我的例子中它读取:
而读数不是结束信号而且计数低于限制:do.
大于2.读取方法的对象类型是什么? double []或ArrayList?
但是我强烈建议您使用List(java.util.List)接口.编程到接口而不是实现是一个很好的OO实践.
> 2.1如何将method-type声明为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 input = new ArrayList();
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”