お分かりのように、私はオブジェクト指向プログラミングにかなり慣れていません。私は自分自身を教えようとしていますが、これに固執していて、何をすべきかわかりません。
長方形のグリッドを行と列にレイアウトするコードを書き込もうとしています。「大きな長方形の上に小さな正方形を配置する」と考えてください。ユーザーは、自分が持っている「小さな正方形」の数を入力します。私の目標は、この整数を行と列の最適なレイアウトにマップすることです。
ユーザーは 20 から 100 までの任意の整数を入力できます。81 の異なる可能なエントリのそれぞれについて、これらの小さな正方形を行と列にレイアウトする最善の方法を決定しました。私が今しなければならないことは、これらの 81 の異なるレイアウトをプログラムに取り込んでから、ユーザーの入力に適用されるものを識別して返すことです。
値は 81 個しかなく、連続する整数に及ぶため、(マップ、ハッシュマップ、ベクトルなどではなく) 配列が最適なアイデアだと思います。これが私がこれまでに持っているものです。少しごちゃごちゃしていますが、私が何をしようとしているのかがわかると思います。誰でも私を助けることができますか?必要な行と列の値を返すことができないようです。
ありがとうございました!
public static void getLayout (int numSquares) {
int rows;
int columns;
Layouts myLayout = new Layouts();
rows = myLayout[numSquares].r; //this is where it fails
columns = myLayout[numSquares].c;
}
class RowCol<R, C> {
/* Class Variables */
public final R r;
public final C c;
public RowCol(R r, C c) {
this.r = r;
this.c = c;
}
public R getRow() {return r;}
public C getCol() {return c;}
}
class Layouts {
RowCol[] myLayouts;
public Layouts() {
/* Set the numbers of Rows and Columns for each possible
* number of squares requested.
*/
myLayouts[20] = new RowCol(5, 4); // 20 Problems
myLayouts[21] = new RowCol(7, 3); // 21 Problems
myLayouts[22] = new RowCol(5, 4); // 22 Problems
myLayouts[23] = new RowCol(5, 4); // 23 Problems
myLayouts[24] = new RowCol(6, 4); // 24 Problems
myLayouts[25] = new RowCol(5, 5); // 25 Problems
myLayouts[26] = new RowCol(6, 4); // 26 Problems
myLayouts[27] = new RowCol(6, 4); // 27 Problems
myLayouts[28] = new RowCol(7, 4); // 28 Problems
//etc...
編集: 以下の応答を適用して、Layouts クラスでオブジェクトをインスタンス化する必要がありました。次に、返された RowCol 値を分離するように getLayout クラスを変更しました。これが更新されたクラスです。この時点での問題は、行と列を整数に変換できないため、そのまま使用できることです。
public static void getLayout(int numSquares) {
Layouts myLayout = new Layouts();
RowCol myRC = myLayout.getLayout(numProbs);
int rows = Integer.parseInt(myRC.getRow());
int cols = Integer.parseInt(myRC.getCol());
}
エラーは次のとおりです。
parseInt(Object) に適したメソッドが見つかりません メソッド Integer.parseInt(String) は適用できません (メソッド呼び出し変換によって実引数 Object を String に変換することはできません) メソッド Integer.parseInt(String,int) は適用できません (実引数と仮引数リストの長さは異なります)
編集:解決しました。みんなありがとう!