0

我一直在编写与基于婚礼的文本文件相关的期末学校项目之一。我正在尝试编写一个返回婚礼对象的方法,

(注意:除草对象由新娘姓名、新郎姓名、婚礼日期、地点、客人人数组成)。

在使用字符串的普通方法中。例如,我只会输入

String temp = ""; 

运行一个循环来遍历我的数组。if 语句

temp = temp + arr[loop].toString();

return temp;

但是现在当我声明它时处理一个婚礼对象:

Wedding temp; - (As i cant initialize it as there is no brideName etc.)
run loop
if statement
temp = temp + array[loop];

return temp; 

这是我得到 temp 的错误可能尚未初始化的地方。

任何人都可以提供有关如何解决此问题的建议吗?非常感谢这是实际方法的样子

 public Wedding getWeddingsOnDay(String date, String venue)
{
    Wedding temp;
    for (int loop = 0; loop < counter; loop++)
    {
        if (wedArr[loop].getWeddingDate().equals(date) && wedArr[loop].getVenue().equals(venue))
            temp = wedArr[loop];
        else
            temp = null;
    }
    return temp;
}
4

2 回答 2

1

以这种方式重写方法。

public Wedding getWeddingAt(String date, String venue) {
    for (Wedding w : wedArr)
    {
        if (w.getWeddingDate().equals(date) &&
                w.getVenue().equals(venue)) {
            return w;
        }
    }
    return null;
}
于 2018-10-13T10:38:45.527 回答
0

您的代码会说这显然是因为您的代码可能不会进入 if 块,并且 temp 变量保持 unintilized 。因此,任何使用它的人都需要在使用这个临时变量之前检查空值。

有几种方法可以消除此错误:

  1. 忽略此错误。由于此错误不会停止运行您的代码。

  2. 您可以使用可选的返回 null ,之后您的方法将类似于以下方法:

    public Optional<Wedding> getWeddingsOnDay(String date, String venue){
    
      Optional<Wedding> temp;
      for (int loop = 0; loop < counter; loop++) {
          if (wedArr[loop].getWeddingDate().equals(date) && wedArr[loop].getVenue().equals(venue)) { 
              temp = Optional.of(wedArr[loop]);}
     else{
              temp = Optional.empty(); 
      }
    }
      return temp;    
    }
    
  3. 您根本不需要使用 temp 只需返回wedArr[loop] 或 null

于 2018-10-13T11:48:54.053 回答