2017-05-02 91 views
-1

現在我們可以從文本文件中輸出一行,按 按行號。問題是我們能夠再次打印出 行號(產品),直到我們的文本文件達到 的產品限制。我們如何停止循環,因此它只打印我們選擇的一行 ?如何從基於文本文件的ArrayList打印一行?

static ArrayList<Product> printOneLine() { 
    ArrayList<Product> oneLineList = new ArrayList<Product>(); 
    Scanner oneLine = readDetails("Products-JavaBikes.txt"); 

    while (oneLine.hasNextLine()) { 
     oneLineList.add(getProduct(oneLine.nextLine())); 

     Scanner input = new Scanner (System.in);    
     System.out.print("Please enter a number:"); 

     for (int i = input.nextInt(); i < oneLineList.size();) {      
      System.out.println(oneLineList.get(i)); 
      break; 
     } 
    } 
    return oneLineList; 
} 
+2

是不是有一個原因,你問的線迭代循環內的數字,而不是在開始時只問一次,然後使用結果找到正確的線? –

+0

你應該從用戶界面獲得數字,然後你可以返回oneList.get(userEnteredLineNumber); –

+1

For循環沒有意義,我想你正在尋找一個if語句。 For循環用於循環,如果你在第一次迭代中無條件地中斷,你做的事情是非常錯誤的。此外,您可能希望調試代碼,甚至只是一步一步地思考它正在做什麼 - 從長遠來看,我們無法告訴您如何修復代碼,這無助於您。 – Dukeling

回答

0

從你的問題來看有點不清楚。但是我認爲你試圖從找到產品輸入的while循環中突破。我將冗餘for循環更改爲if語句,以便您可以從while循環中斷開。您的休息時間剛剛從for循環中斷開,而不是while循環。

static ArrayList<Product> printOneLine() { 
    ArrayList<Product> oneLineList = new ArrayList<Product>(); 
    Scanner oneLine = readDetails("Products-JavaBikes.txt"); 

    while (oneLine.hasNextLine()) { 
     oneLineList.add(getProduct(oneLine.nextLine())); 

     System.out.print("Please enter a number:"); 
     Scanner input = new Scanner (System.in);    

     if(input.nextInt() < oneLineList.size()) {      
      System.out.println(oneLineList.get(i)); 
      break; 
     } 
    } 
    return oneLineList; 
}