[英]Java - else in the loop statement keeps executing
這讓我難過。 我使用循環來遍歷數組,然后使用ifs / else查找是否滿足條件。 但是,即使同時也執行if語句,else語句也會繼續執行。 可能真的缺少基本的東西。 我需要在用戶輸入類型時檢查兩次if語句,以及數組中的項目也符合該類型。
干杯
for (int i = 0; i < movies.length; i++)
{
//RentalMovie movie = movies[i];
if(movies[i].getMovieGenre().equalsIgnoreCase("action") && movies[i].getMovieGenre().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if(movies[i].getMovieGenre().equalsIgnoreCase("childrens") && movies[i].getMovieGenre().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if (movies[i].getMovieGenre().equalsIgnoreCase("drama") && movies[i].getMovieGenre().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else
{
genreList += "- No rental movies were found for the genre: " + genreID;
}
}
可能發生的情況是if
語句未正確評估。 這是我會嘗試的:
for (int i = 0; i < movies.length; i++)
{
//RentalMovie movie = movies[i];
if(movies[i].getMovieGenre().equalsIgnoreCase("action") && movies[i].getMovieGenreID().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if(movies[i].getMovieGenre().equalsIgnoreCase("childrens") && movies[i].getMovieGenreID().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if (movies[i].getMovieGenre().equalsIgnoreCase("drama") && movies[i].getMovieGenreID().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else
{
genreList += "- No rental movies were found for the genre: " + genreID;
}
}
我想嘗試的另一件事是擺脫一些代碼,即:
for (int i = 0; i < movies.length; i++)
{
//RentalMovie movie = movies[i];
if(movies[i].getMovieGenre().equalsIgnoreCase("action"))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if(movies[i].getMovieGenre().equalsIgnoreCase("childrens"))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if (movies[i].getMovieGenre().equalsIgnoreCase("drama"))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else
{
genreList += "- No rental movies were found for the genres action, childrens, or drama -";
}
}
我建議的第三件事是嘗試一下:
for (int i = 0; i < movies.length; i++)
{
//RentalMovie movie = movies[i];
if(movies[i].getMovieGenre().equalsIgnoreCase("action") || movies[i].getMovieGenre().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if(movies[i].getMovieGenre().equalsIgnoreCase("childrens"))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if (movies[i].getMovieGenre().equalsIgnoreCase("drama"))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else
{
genreList += "- No rental movies were found for the genre: " + genreID;
}
}
我懷疑您的意思是您在數組中有一些條目確實符合您的搜索條件,而另一些條目卻不匹配。 對於每個匹配項,都在執行適當的if
子句,但是對於每個不匹配項,則在執行else
。
由於else中的操作是添加一條消息,指示未找到匹配項,因此您可能不想每次發現單個不匹配項時都添加該消息。 相反,如果根本沒有找到匹配項,則在循環后只需要執行一次。 可能看起來像:
String genreList = "";
for (int i = 0; i < movies.length; i++)
{
if(movies[i].getMovieGenre().equalsIgnoreCase("action") && movies[i].getMovieGenre().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if(movies[i].getMovieGenre().equalsIgnoreCase("childrens") && movies[i].getMovieGenre().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else if (movies[i].getMovieGenre().equalsIgnoreCase("drama") && movies[i].getMovieGenre().equalsIgnoreCase(genreID))
{
genreList += movies[i].getMovieID() + " - " + movies[i].getMovieTitle() + "[" + movies[i].getMediaType() + "]\n";
}
else
{
}
}
if (genreList.equals(""))
{
genreList = "No rental movies were found for the genre: " + genreID;
}
PS:我根本不明白為什么您要在接受電影之前對照genreID
和硬編碼值來檢查每部電影的類型。 列表中是否還存在其他類型,但您不希望用戶能夠搜索? 那是唯一看起來合理的方法,但這似乎不是一個非常明智的要求。
嘗試使用調試器逐步解決它,然后可以隨時查看變量的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.