正如您将看到的,我对面向对象编程相当陌生。我正在尝试自学,但被困在这一点上,无法弄清楚该怎么做。
我正在尝试编写一些代码来将矩形网格布局为行和列。想想“把小方块放在一个大矩形上”。用户将输入他们有多少个“小方块”。我的目标是将这个整数映射到行和列的最佳布局中。
用户可以输入从 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 类中实例化一个对象,我这样做了。然后,我修改了 getLayout 类以隔离返回的 RowCol 值。这是更新的课程。此时我的问题是我无法将行和列转换为整数,以便我可以这样使用它们。
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) 方法不适用(实际和形式参数列表长度不同)
编辑:解决。谢谢大家!