需要帮助理解Java中的列表吗 公共类工作表{ 私有数组列表数据; 私有字符串标题; 公共工作表(字符串标题){ 数据=新的ArrayList(); this.title=标题; } 公共ArrayList getData(){ 返回数据; } 公共字符串getTitle(){ 返回标题; } 公共双get(int行,int列){ for(数据输入:数据){ if((dataEntry.getColumn()==列)&&(dataEntry.getRow()==行)){ 返回dataEntry.getValue(); } } 返回null; } 公共无效集(int行、int列、双val){ 布尔值isNew=true; for(数据输入:数据){ if((dataEntry.getColumn()==列)&&(dataEntry.getRow()==行)){ dataEntry.setValue(val); isNew=false; } } 如果(是新的){ DataEntry newData=新的DataEntry(行、列、值); data.add(newData); } } public int indexOf(int行,int列){ int结果=-1; for(数据输入:数据){ if((dataEntry.getColumn()==列)&&(dataEntry.getRow()==行)){ } } 返回结果;//待完成 } }
我在即将到来的考试中得到了这段代码作为练习,我非常不擅长学习编码中的新概念。如果有人能够理解代码并提供函数indexOf的正确答案 我理解用户创建的函数是如何工作的,我只是想不出在这个主体中填充什么需要帮助理解Java中的列表吗 公共类工作表{ 私有数组列表数据; 私有字符串标题; 公共工作表(字符串标题){ 数据=新的ArrayList(); this.title=标题; } 公共ArrayList getData(){ 返回数据; } 公共字符串getTitle(){ 返回标题; } 公共双get(int行,int列){ for(数据输入:数据){ if((dataEntry.getColumn()==列)&&(dataEntry.getRow()==行)){ 返回dataEntry.getValue(); } } 返回null; } 公共无效集(int行、int列、双val){ 布尔值isNew=true; for(数据输入:数据){ if((dataEntry.getColumn()==列)&&(dataEntry.getRow()==行)){ dataEntry.setValue(val); isNew=false; } } 如果(是新的){ DataEntry newData=新的DataEntry(行、列、值); data.add(newData); } } public int indexOf(int行,int列){ int结果=-1; for(数据输入:数据){ if((dataEntry.getColumn()==列)&&(dataEntry.getRow()==行)){ } } 返回结果;//待完成 } },java,Java,我在即将到来的考试中得到了这段代码作为练习,我非常不擅长学习编码中的新概念。如果有人能够理解代码并提供函数indexOf的正确答案 我理解用户创建的函数是如何工作的,我只是想不出在这个主体中填充什么 indexOf的描述说,它应该使用给定的行和列返回列表数据中DataEntry对象的索引,否则如果找不到这样的DataEntry对象,则返回-1。为了理解indexOf方法,您需要了解列表是什么;它表示按定义顺序排列的项目序列。因此,您知道列表中的项目以及它们的顺序 例如:您在列表中有“a”、“b”
indexOf的描述说,它应该使用给定的行和列返回列表数据中DataEntry对象的索引,否则如果找不到这样的DataEntry对象,则返回-1。为了理解
indexOf
方法,您需要了解列表是什么;它表示按定义顺序排列的项目序列。因此,您知道列表中的项目以及它们的顺序
例如:您在列表中有“a”、“b”、“c”项,那么您就知道该列表有三个项,“a”是第一项,“b”是第二项,“c”是第三项。例如,如果您想知道“b”的位置,则需要扫描或迭代列表,同时进行计数。当您找到“b”时,您必须停止计数并返回当前计数。这是indexOf
的结果
请注意:当您计数时,从0开始-这意味着如果第一个元素匹配,则indexOf
的结果为0,如果第二个元素匹配,则结果为1。如果没有找到任何内容,通常返回-1
这种逻辑的一种可能实现方式是:
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
}
}
你似乎觉得,如果你让别人教你很多书和教程中解释过的东西,那么某种编码学校也是如此。对不起,这是你的误解。我们会提供清晰、具体的问题。我们不能代替你坐下来学习。这不是免费的家教服务。@GhostCat:我同意你的看法。但我发现,即使是最基本的问题,也总是有一些有趣的东西。对我来说,这类问题的积极挑战是:如何以最清晰、正确、简洁和富有启发性的方式解释这一非常基本的主题,从而为社会增加价值。在这种特定情况下,我认为有机会这样做。我知道您必须使用计数器(例如计数器++),但我不知道如何传递列表中的值。以
开头的表达式for(DataEntry DataEntry:data){
和以关闭的表达式用于传递,即迭代或扫描列表。
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'
}