我是使用 OOP 的新手,我通常只是将所有代码放在一个类中并使用方法。但是我想维护状态信息并认为类是最合适的,但是我很难理解它。
假设我有一个项目列表,我想在列表中所有先前项目的总和等于 X 时停止(在本例中为 10,因此需要项目 1 + 2,然后是 2+3.etc..直到它达到阈值 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;
}
}
}
我不需要任何人来修复我的代码或任何东西(我想自己做,代码只是为了让我知道我在做什么)。我对我的逻辑缺陷更感兴趣,也许是一种让我更好地考虑设计类的方法,这样我就可以更好地将它们应用到我自己的情况中。