答案:
>1。我似乎无法使输入循环正常工作,这样做的最佳做法是什么。
我宁愿有一个简单的 while 循环而不是 do{}while... 并将条件放在 while... 在我的示例中它显示为:
而读取的数量不是结束信号并且计数低于限制:做。
>2。阅读方法的对象类型是什么?double[] 还是 ArrayList?
一个 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<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 代码风格中,变量名称应该像“endSignal”而不是“end_signal”一样采用驼峰式大小写