私は OOP を初めて使用します。通常、すべてのコードを 1 つのクラスに入れ、メソッドを使用します。しかし、状態情報を維持したいので、クラスが最適だと思いますが、頭を悩ませています。
アイテムのリストがあり、リスト内の以前のすべてのアイテムの合計が X (この場合は 10 なので、アイテム 1 + 2、次に 2 + 3 など) になったときに停止したいとします。しきい値 10)、メソッドを使用して計算することはできますが、実際に行う必要があるのは最後の項目をインクリメントして、データがしきい値を超えているかどうかを確認するだけである場合、プロセス全体を最初からやり直す必要があります。これまでのコードは次のとおりですが、実際には機能しますが、クラスを独立したメソッドとして使用し、ループごとに再計算するだけなので、良くないことはわかっています。私の目標は、この構造を使用して、しきい値をチェックする必要がない場合はループを減らすことです。
助言がありますか?
コード:
public class LearningClassesCounter {
public static void main(String[] args) {
int[] list = new int[]{1,2,3,4,5,6,7,8,9,10};
int[] data_list = new int[list.length];
for (int current_location = 0; current_location<list.length;current_location++) {
//can only put commands in here. Nothing above.
Counter checker = new Counter(data_list);
System.out.println(checker.check_data(current_location));
for (int i =0; i<100; i++){
if (checker.check_data(current_location) == false) {
break;
}
data_list[current_location] = (list[current_location]+1); //this is just a random function, it could be any math function I just put it in here to show that some work is being done.
}
}
//its done now lets print the results
for (Integer item : data_list) {
System.out.println(item);
}
}
}
class Counter {
private int[] data_list;
private int total_so_far;
// create a new counter with the given parameters
public Counter(int[] data_list) {
this.data_list = data_list;
this.total_so_far = 0;
}
public boolean check_data(int current_location) {
// TODO Auto-generated method stub
int total_so_far = 0;
//System.out.println(total_so_far);
for (int item : data_list) {
total_so_far = item + total_so_far;
if (total_so_far >= 10) {
break;
}
}
if (total_so_far>=10) {
return false;
} else {
return true;
}
}
}
コードなどを修正する人は必要ありません(自分でやりたいのですが、コードは自分が何をしているのかを理解するためのものです)。私は自分のロジックの欠陥にもっと興味があり、クラスの設計についてよりよく考えて、自分の状況により良く適用できるようにする方法かもしれません。