2016-06-08 5 views
-1

Я пытаюсь использовать ввод-вывод, чтобы предоставить отчет о запасе, который мне нужен (если запас ниже 8).I/O Java требуется int

Это говорит мне, что для myShop.listLowStockToFile()); требуется int; когда я добавляю номер, он говорит мне, что 'void здесь запрещен'. Как я могу это исправить?

public void listLowStockToFile(int threshhold) 
    { 
    System.out.println("****The Stock that is getting low is: " + " Minimum " +threshhold + " Report for Bob Shaw****\n"); 
    for (Item nextItem : items) 
    { 
    if(nextItem.getNuminStock() < threshhold) 
    { 
     System.out.println(nextItem); 
    } 
} 
} 

public class Report { 
    public static void main(String[] args) { 
     Shop myShop = new Shop(); 

     CD cd1 = new CD("Abba Gold", "Abba", 15); 
     myShop.addItem(cd1); 

     Game game1 = new Game("Chess", 2, 39.95); 
     myShop.addItem(game1); 

     ElectronicGame eg1 = new ElectronicGame("Shrek", "PS2", 1, 79.50); 
     myShop.addItem(eg1); 
     ElectronicGame eg2 = new ElectronicGame("Doom", "PC", 2, 30.20); 
     myShop.addItem(eg2); 
     ElectronicGame eg3 = new ElectronicGame("AFL", "PS2", 2, 49.95); 
     myShop.addItem(eg3); 


     cd1.receiveStock(3); 
     game1.receiveStock(5); 
     eg1.receiveStock(10); 
     eg2.receiveStock(1); 
     cd1.receiveStock(7); 


     cd1.sellCopy(true); 
     cd1.sellCopy(true); 
     eg2.sellCopy(true); 

     myShop.listItems(); 
     myShop.listLowStockToFile(8); 
     myShop.listGamesByPlatform("PS2"); 
     myShop.calcTotalSales(); 

     Game game2 = new Game("Chess", 2, 39.95); 
     myShop.addItem(game2); 

     eg2.sellCopy(false); 

     try { 
      BufferedWriter writer = new BufferedWriter(new FileWriter("LowStock.txt")); 
      writer.write("Report dated" + new Date() + "\n"); 
      writer.write(myShop.listLowStockToFile()); // This line. 
      writer.close(); 
      System.out.println("Report finished"); 
     } catch (Exception ex) { 
      System.out.println("File I/O error" + ex); 
     } 
    } 
} 
+1

Вы не указали соответствующий код; но я собираюсь предположить, что 'listLowStockToFile' имеет возвращаемый тип' void', а не тип значения. –

+1

'listLowStockToFile' принимает' int' и ничего не возвращает ('void'), поэтому вы не можете использовать его как' writer.write (myShop.listLowStockToFile()); 'или' writer.write (myShop.listLowStockToFile (8)); ' – Tom

+0

, так что любые идеи о том, что я могу сделать? – Bob

ответ

0

Вам нужно listLowStockToFile вернуть строку:

public String listLowStockToFile(int threshhold) { 
    String rtn = "****The Stock that is getting low is: " + " Minimum " +threshhold + " Report for Bob Shaw****\n"; 
    for (Item nextItem : items) { 
     if(nextItem.getNuminStock() < threshhold) { 
     rtn += nextItem.toString() + "\n"; 
     } 
    } 

    System.out.print(rtn); 

    return rtn; 
} 

Причина заключается в том, что BufferedWritter.write принимает String в качестве аргумента.

+0

позволяет мне скомпилировать, но избавляется от порога из моего вывода. Я боюсь – Bob

+0

Под «output» я предполагаю, что вы имеете в виду stdout (console). Вы можете просто добавить в 'System.print (rtn)' to 'listLosStockToFile' – jenglert

+0

lol, dude, im a noob, вы, вероятно, могли бы принять много – Bob