Java 实例化和初始化对象时出现的问题
我一直在编写一个与基于婚礼的文本文件相关的期末项目。 我试图编写一个方法,返回一个婚礼对象 (注:除草对象包括新娘名、新郎名、婚礼日期、地点、宾客人数) 在使用字符串的普通方法中。例如,我只会打字Java 实例化和初始化对象时出现的问题,java,objectinstantiation,Java,Objectinstantiation,我一直在编写一个与基于婚礼的文本文件相关的期末项目。 我试图编写一个方法,返回一个婚礼对象 (注:除草对象包括新娘名、新郎名、婚礼日期、地点、宾客人数) 在使用字符串的普通方法中。例如,我只会打字 String temp = ""; 在我的数组中运行一个循环到一个循环。if语句 temp = temp + arr[loop].toString(); return temp; 但是现在当我申报结婚物品时: Wedding temp; - (As i cant initialize it a
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;
这里是我得到错误的临时可能还没有初始化
有人能帮我建议一下如何解决这个问题吗?多谢各位
下面是实际方法的样子
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;
}
公共婚礼星期二(字符串日期、字符串地点)
{
婚礼临时工;
for(int循环=0;循环<计数器;循环++)
{
if(wedArr[loop].getWeddingDate().equals(date)和&wedArr[loop].getVenue().equals(venue))
温度=wedArr[回路];
其他的
温度=零;
}
返回温度;
}
以这种方式重写该方法
public Wedding getWeddingAt(String date, String venue) {
for (Wedding w : wedArr)
{
if (w.getWeddingDate().equals(date) &&
w.getVenue().equals(venue)) {
return w;
}
}
return null;
}
您的问题的完整解决方案:
package pojo.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Wedding {
private String groomName;
private String brideName;
private String weddingDate;
private String venue;
private int numberOfGuests;
/**
*
*/
public Wedding() {
super();
}
/**
* @return the groomName
*/
public String getGroomName() {
return groomName;
}
/**
* @param groomName the groomName to set
*/
public void setGroomName(String groomName) {
this.groomName = groomName;
}
/**
* @return the brideName
*/
public String getBrideName() {
return brideName;
}
/**
* @param brideName the brideName to set
*/
public void setBrideName(String brideName) {
this.brideName = brideName;
}
/**
* @return the weddingDate
*/
public String getWeddingDate() {
return weddingDate;
}
/**
* @param weddingDate the weddingDate to set
*/
public void setWeddingDate(String weddingDate) {
this.weddingDate = weddingDate;
}
/**
* @return the venue
*/
public String getVenue() {
return venue;
}
/**
* @param venue the venue to set
*/
public void setVenue(String venue) {
this.venue = venue;
}
/**
* @return the numberOfGuests
*/
public int getNumberOfGuests() {
return numberOfGuests;
}
/**
* @param numberOfGuests the numberOfGuests to set
*/
public void setNumberOfGuests(int numberOfGuests) {
this.numberOfGuests = numberOfGuests;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "[groomName=" + groomName + ", brideName=" + brideName + ", weddingDate=" + weddingDate
+ ", venue=" + venue + ", numberOfGuests=" + numberOfGuests + "]\n";
}
/**
*
* @param weddingList
* @param date
* @param venue
* @return
*/
public List<Wedding> getWeddingsOnDay(List<Wedding> weddingList, String date, String venue)
{
List<Wedding> weddingFound = new ArrayList<Wedding>();
for (Wedding wed : weddingList)
{
if (wed.getWeddingDate().equals(date) && wed.getVenue().equals(venue))
weddingFound.add(wed);
}
return weddingFound;
}
}
/**
* Testing
*
* @author Anish
*
*/
public class Test {
public static void main(String...args) {
List<Wedding> weddingList = new ArrayList<Wedding>();
//first data
Wedding weddingFirstCouple = new Wedding();
weddingFirstCouple.setBrideName("Elisabeth");
weddingFirstCouple.setGroomName("Michael");
weddingFirstCouple.setWeddingDate("29 October 2018");
weddingFirstCouple.setVenue("New Country Wedding Hall, Australia");
weddingFirstCouple.setNumberOfGuests(2000);
weddingList.add(weddingFirstCouple);
//second data
Wedding weddingSecondCouple = new Wedding();
weddingSecondCouple.setBrideName("Lisa");
weddingSecondCouple.setGroomName("John");
weddingSecondCouple.setWeddingDate("15 December 2018");
weddingSecondCouple.setVenue("Lifelong Wedding Hall, USA");
weddingSecondCouple.setNumberOfGuests(1500);
weddingList.add(weddingSecondCouple);
System.out.println(weddingList);
//checking the Wedding Date : getWeddingOnDay
//lets see..
Wedding wedObj = new Wedding();
Scanner sc = new Scanner(System.in);
String weddingDate = sc.nextLine();
String venue = sc.nextLine();
List<Wedding> weddingCoupleListOnTheDay = wedObj.getWeddingsOnDay(weddingList, weddingDate, venue);
for(Wedding weddingCoupleOnTheDay : weddingCoupleListOnTheDay) {
System.out.println(weddingCoupleOnTheDay);
}
}
}
我建议您对复杂的Java程序使用Java集合,并对每个循环使用Java集合进行横向转换。
谢谢:)您的代码会这样说,因为您的代码可能不会进入if块,并且temp variable保持未使用状态。所以,任何使用它的人都需要在使用这个临时变量之前检查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;
}
public可选getWeddingsOnDay(字符串日期、字符串地点){
可选温度;
for(int循环=0;循环<计数器;循环++){
如果(wedArr[loop].getWeddingDate().equals(date)和&wedArr[loop].getVenue().equals(venue)){
temp=可选的(wedArr[loop]);}
否则{
temp=可选的.empty();
}
}
返回温度;
}
在使用对象之前,将引用
temp
指定给该对象。
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;
}