私は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;
}
}
}
私は私のコードか何かを修正するために誰を必要としない(私はそれを自分でやりたい、コードはちょうど私がやっているかのアイデアを与えることです)。私は自分のロジックの欠陥にもっと興味を持っています。クラスを設計することについて私がよりよく考えるように、自分の状況に合わせてより適切に適用できる方法かもしれません。
私はこれで何をしようとしているのか分かりません。 – squarephoenix
@ techjunkie.css私はあなたの理解に問題がある特定の部分を明確にすることがうれしいです。 –
私はあなたが達成しようとしていることを知りませんが、check_dataメソッド内でtotal_so_farインスタンス変数を隠しているローカル変数total_so_farを宣言しています。私はあなたがこれをすることを意図していたのか疑問です。 – tronbabylove