我的應用程式有一個小問題,我在測驗時發現了它。我需要運行一行代碼來通知用戶他們輸入了一個無效的產品代碼。
我遇到的問題是,我不能簡單地將其放在For Loop內的Else陳述句中,因為它將在每次產品代碼不匹配時運行,直到找到一個匹配的代碼,從而使其運行多次。
如果有任何幫助,我們將不勝感激,謝謝你:)
static void searchProduct() {
System.out.print("請輸入產品代碼進行搜索:")。
String searchTerm = in.nextLine().toUpperCase() 。
for (int i = 0; i< report.size(); i ) {
if (report.get(i).code.eals(searchTerm)) {
System.out.println("****************************************************************************"
"
產品搜索結果"/span>
"
****************************************************************************");
System.out.println(" PRODUCT CODE >> " report.get(i).code)。
System.out.println(" PRODUCT NAME >> " report.get(i).name)。
System.out.println("PRODUCT CATERGORY >> " report.get(i).category)。
System.out.println("PRODUCT WARRANTY >> " report.get(i).warranty)。
System.out.println("PRODUCT PRICE >> " report.get(i).price)。
System.out.println("PRODUCT LEVEL >> " report.get(i).stock)。
System.out.println("PRODUCT SUPPLIER >> " report.get(i).supplier)。
System.out.println("****************************************************************************");
}
else {
//System.out.println("該產品無法定位。無效產品"); {
}
}
System.out.println("輸入(1)啟動選單或任何其他鍵退出")。
String opt2 = in.nextLine() 。
if (opt2.eals("1") {
mainMenu.Menu()。
}
else { System.exit(0); }
uj5u.com熱心網友回復:
把列印和回圈分開:
回圈瀏覽串列直到找到專案:
Report r = null;
for (int i = 0; i < report.size(); i) {
if (report.get(i).code.eals(searchTerm)) {
r = report.get(i);
break;
}
}
// or; }
for (Report rep : report) {
if (rep.code.equals(searchTerm)) {
r = rep;
break;
}
}
//or break; }
Report r = report.stream().filter(rep -> rep.code.equals(searchTerm)).findFirst() .orElse(null) 。
現在,r只有在你找到東西的時候才是非空的,所以,在回圈之后:
if (r != null) {
//Print stuff.
} else {
// print message saying you didn't find it.
}
uj5u.com熱心網友回復:
使用一個布爾標志來檢測是否找到了產品:
boolean found = false。
for (int i = 0; i < report.size(); i ) {
if (report.get(i).code.eals(searchTerm)) {
System.out.println("****************************************************************************"
"
產品搜索結果"/span>
"
****************************************************************************");
System.out.println(" PRODUCT CODE >> " report.get(i).code)。
System.out.println(" PRODUCT NAME >> " report.get(i).name)。
System.out.println("PRODUCT CATERGORY >> " report.get(i).category)。
System.out.println("PRODUCT WARRANTY >> " report.get(i).warranty)。
System.out.println("PRODUCT PRICE >> " report.get(i).price)。
System.out.println("PRODUCT LEVEL >> " report.get(i).stock)。
System.out.println("PRODUCT SUPPLIER >> " report.get(i).supplier)。
System.out.println("****************************************************************************");
found= true。
}
}
//end of the loop; }
if(!found) System.out.println("該產品無法定位。無效的產品")。)
uj5u.com熱心網友回復:
將用于搜索 "報告 "中的專案的資料結構從List切換為HashMap,以避免回圈瀏覽所有的專案:
HashMap<String, Integer> quickSearchMapping;
quickSearchMapping = new HashMap<> ()。
for(int i=0 ; i<report.size ; i ){
quickSearchMapping.put(report.get(i).code, i)。
}
while(TRUE){
System.out.print("請輸入產品代碼進行搜索:")。
String searchTerm = in.nextLine().toUpperCase() 。
if quickSearchMapping.containsKey(searchTerm){
Report the_report = report.get( quickSearchMapping.get(searchTerm))。
//print to user stuff in the_report
break; //break if you wish to。
} else {
System.out.println("輸入的代碼與任何產品不匹配。")。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/328907.html
標籤:
上一篇:用cpp查找陣列中的素數的程式
下一篇:For回圈和lapply
