ショーン・マカヴォイ:
私はチケットシステムを作っています。ユーザーがチケットを探しているならば、彼らは名前を入力します。私はそれを入力するようユーザーに要求したときには機能していません。
私はこのようなメソッドを呼び出す場合:G1.displayTicket("John Blogs", LottoTickets);
それは作業を行います!
特定のチケットを表示:
System.out.print("\nDo you wish to search for a particular ticket? ");
String certainTicketQ = in.next();
if(certainTicketQ.equalsIgnoreCase("Yes"))
{
System.out.print("Name of the person you wish to search for: ");
String name = in.next();
G1.displayTicket(name, LottoTickets);
}
方法は次のとおりです。
public void displayTicket(String name,Ticket[] LottoTickets)
{
for(int i = 0; i<LottoTickets.length;i++)
{
if(name.equalsIgnoreCase(LottoTickets[i].getName())){
System.out.println(LottoTickets[i]);
break; //Breaks out of loop once ticket is found
}else break;
}
}
アービンド・クマールのAvinash:
問題は、の存在によるものであるelse break;
場合、最初の反復自体でループを破壊しているLottoTickets[0]
に等しくありませんname
。それはときにのみ正しい結果を返しますLottoTickets[0]
と同じですname
。
public void displayTicket(String name,Ticket[] LottoTickets) {
for(int i = 0; i<LottoTickets.length;i++) {
if(name.equalsIgnoreCase(LottoTickets[i].getName())) {
System.out.println(LottoTickets[i]);
break; //Breaks out of loop once ticket is found
}else break;
}
}
ただ、それを削除し、あなたの方法は、それがあるべき、すなわち、意図したとおりに動作します:
public void displayTicket(String name,Ticket[] LottoTickets) {
for(int i = 0; i<LottoTickets.length;i++) {
if(name.equalsIgnoreCase(LottoTickets[i].getName())) {
System.out.println(LottoTickets[i]);
break; //Breaks out of loop once ticket is found
}
}
}
何の疑いも/問題の場合にはコメントをお気軽に。