public class Worksheet {
private ArrayList<DataEntry> data;
private String title;
public Worksheet(String title) {
data = new ArrayList<DataEntry>();
this.title = title;
}
public ArrayList<DataEntry> getData() {
return data;
}
public String getTitle() {
return title;
}
public Double get(int row, int column) {
for (DataEntry dataEntry : data) {
if ((dataEntry.getColumn() == column) && (dataEntry.getRow() == row)) {
return dataEntry.getValue();
}
}
return null;
}
public void set(int row, int column, double val) {
boolean isNew = true;
for (DataEntry dataEntry : data) {
if ((dataEntry.getColumn() == column) && (dataEntry.getRow() == row)) {
dataEntry.setValue(val);
isNew = false;
}
}
if (isNew) {
DataEntry newData = new DataEntry(row, column, val);
data.add(newData);
}
}
public int indexOf(int row, int column) {
int result = -1;
for (DataEntry dataEntry : data) {
if ((dataEntry.getColumn() == column) && (dataEntry.getRow() == row)) {
}
}
return result; //to be completed
}
}
我接受了这段代码作为我即将到来的考试的练习,我在编写新的编码概念方面非常糟糕。如果有人能够理解代码并为函数 indexOf 提供正确的答案。
我理解用户创建的函数是如何工作的,我只是不能想到要填充这个函数的内容。
indexOf 的描述表明它应该使用给定的行和列返回列表数据中的DataEntry对象的索引,否则如果找不到这样的DataEntry对象则返回-1。
答案 0 :(得分:1)
为了理解indexOf
方法,您需要了解列表的内容;它以定义的顺序表示一系列项目。因此,您知道列表中的哪些项目以及它们的顺序。
例如:你有物品&#34; a&#34;,&#34; b&#34;,&#34; c&#34;在列表中,您知道该列表有三个项目,并且#34; a&#34;是第一项,&#34; b&#34;第二个,&#34; c&#34;第三。如果您想知道例如&#34; b&#34;的位置,您需要扫描或遍历列表并同时计数。当你找到&#34; b&#34;你必须停止计数并返回当前计数。这是indexOf
的结果。
只是旁注:当你计算时从0开始 - 这意味着如果第一个元素匹配,indexOf
的结果为0,如果第二个元素匹配,则结果为1。如果您没有找到任何通常的东西,则返回-1。
这种逻辑的一种可能的实现可能在你的情况下:
public static int indexOf(int row, int column) {
int result = -1;
for (DataEntry dataEntry : data) { // expression used for iteration, or scanning, or pass through the list
result++; // expression used to increment the counter
if ((dataEntry.getColumn() == column) && (dataEntry.getRow() == row)) {
return result; // returns the count if found
}
}
return -1; // returns -1 meaning: the message 'not found'
}