Oct*_*lop 6 java arrays arraylist
我习惯了python,所以这对我来说有点混乱.我试图逐行接收输入,直到用户输入一定数量.数字将存储在一个数组中,以便为它们应用一些统计数学.目前,我有一个主类,统计类和一个"阅读"类.
两个问题:
我似乎无法让输入循环得以解决,这样做的最佳做法是什么.
读取方法的对象类型是什么?double []或ArrayList?
如何将method-type声明为arraylist?
如何防止阵列中存储的值超过1000?
让我展示一下到目前为止:
public static java.util.ArrayList readRange(double end_signal){
//read in the range and stop at end_signal
ArrayList input = new ArrayList();
Scanner kbd = new Scanner( System.in );
int count = 0;
do{
input.add(kbd.nextDouble());
System.out.println(input); //debugging
++count;
} while(input(--count) != end_signal);
return input;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,原谅我的新手......
您在循环条件中需要的是:
while ( input.get( input.size()-1 ) != end_signal );
Run Code Online (Sandbox Code Playgroud)
你正在做的是递减计数器变量.
你也应该声明ArrayList
如下:
ArrayList<Double> list = new ArrayList<Double>();
Run Code Online (Sandbox Code Playgroud)
这使得列表类型特定,并允许条件给定.否则会有额外的施法.
答案:
>1. 我似乎无法让输入循环发挥作用,这样做的最佳实践是什么。
我宁愿有一个简单的 while 循环而不是 do{}while... 并将条件放在 while... 在我的示例中,它是:
当读取的数量不是结束信号并且计数低于限制时:do。
>2. 读取方法的对象类型是什么?double[] 还是 ArrayList?
ArrayList,但是我强烈建议您使用 List ( java.util.List ) 接口。针对接口而不是针对实现进行编程是一种良好的面向对象实践。
>2.1如何将方法类型声明为数组列表?
请参阅下面的代码。
>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;
}
}
Run Code Online (Sandbox Code Playgroud)
最后备注:
最好有“实例方法”而不是类方法。这样,如果需要,“readRange”可以由子类处理,而无需更改签名,因此在示例中,我删除了“static”关键字,并创建了“InputTest”类的实例
在java代码风格中,变量名称应该采用驼峰式大小写,如“endSignal”而不是“end_signal”
归档时间: |
|
查看次数: |
16878 次 |
最近记录: |