- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在本学期的最后一项作业中,我必须创建一个包含 Item 对象数组的库存程序。每个项目都包含一个 ID(在您添加项目时分配并且不能修改)、名称、描述、现有项目数量和单价。
我还需要使用文件 I/O 流来保存和加载文件。我可以很好地保存到文本文件中。但是,我无法开始使用 readFile 方法。我真的很想在不寻求任何帮助的情况下完成这项任务,但我很难过。我如何使用 FileInputStream 读取文本文件?
元素等级
import java.text.NumberFormat;
public class Item
{
private int ID;
private String name;
private String Desc;
private int onHand;
private double unitPrice;
public Item(int pID)
{
ID = pID;
}
public Item(int pID, String pName, String pDesc, int pOnHand, Double pUnitPrice)
{
ID = pID;
name = pName;
Desc = pDesc;
onHand = pOnHand;
unitPrice = pUnitPrice;
}
public void display()
{
NumberFormat dollars = NumberFormat.getCurrencyInstance();
System.out.printf("%-6s%-20s%-24s%-12s%-6s\n", ID, name, Desc, onHand, dollars.format(unitPrice));
}
// GETTERS AND SETTERS
public int getID()
{
return ID;
}
public void setName(String pName)
{
name = pName;
}
public String getName()
{
return name;
}
public void setDesc(String pDesc)
{
Desc = pDesc;
}
public String getDesc()
{
return Desc;
}
public void setOnHand(int pOnHand)
{
onHand = pOnHand;
}
public int getOnHand()
{
return onHand;
}
public void setUnitPrice(double pUnitPrice)
{
unitPrice = pUnitPrice;
}
public double getUnitPrice()
{
return unitPrice;
}
}
库存类
import java.util.Scanner;
import java.io.PrintWriter;
import java.io. FileOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Inventory
{
int max = 30;
int count = 0;
Item myItem[] = new Item[max];
Scanner scannerObject = new Scanner(System.in);
public void addItem()
{
try{
if (count >= max)
{
System.out.println("\nNo more room!");
}else{
System.out.print("\nPlease enter name of item: ");
String lname = scannerObject.nextLine();
System.out.print("\nPlease enter a brief description of the item: ");
String ldesc = scannerObject.nextLine();
System.out.print("\nPlease enter the amount on hand: ");
int lonHand = scannerObject.nextInt();
System.out.print("\nPlease enter unit price of the item: $");
Double lunitPrice = scannerObject.nextDouble();
myItem[count] = new Item(count + 1, lname, ldesc, lonHand, lunitPrice);
count++;
System.out.println("\nThank you. The ID number for " + lname + " is " + count);
scannerObject.nextLine();
}
}catch(Exception e)
{
System.out.println("\nERROR! Please try again:\n");
scannerObject.nextLine();
}
}
public int findItem()
{
int found = -1;
int inputID =0;
try{
System.out.print("\nGreetings, please enter the ID number for item:\n");
inputID = scannerObject.nextInt();
for(int i = 0; i < count; i++){
if(myItem[i].getID() == inputID){
found = i;
scannerObject.nextLine();
}
}
}catch(Exception e)
{
System.out.println("\nERROR!");
scannerObject.nextLine();
}
return found;
}
public void modify()
{
int lfound = findItem();
if (lfound == -1){
System.out.println("\nInvalid input! Please try again:");
scannerObject.nextLine();
}else{
try{
System.out.print("\nPlease enter name of item: ");
String lname = scannerObject.nextLine();
myItem[lfound].setName(lname);
System.out.print("\nPlease enter a brief description of the item: ");
String ldesc = scannerObject.nextLine();
myItem[lfound].setDesc(ldesc);
System.out.print("\nPlease enter the amount on hand: ");
int lonHand = scannerObject.nextInt();
myItem[lfound].setOnHand(lonHand);
System.out.print("\nPlease enter unit price of the item: $");
double lunitPrice = scannerObject.nextDouble();
myItem[lfound].setUnitPrice(lunitPrice);
scannerObject.nextLine();
}catch (Exception e)
{
System.out.println("\nInvalid command! Please try again: ");
scannerObject.nextLine();
}
}
}
public void displayAll()
{ System.out.println("_______________________________________________________________________________\n");
System.out.println(" Inventory ");
System.out.println("_______________________________________________________________________________\n");
System.out.printf("\n%-6s%-20s%-24s%-12s%-6s\n", "ID:", "Name:", "Description:","On Hand:", "Unit Price:\n"); //Header
System.out.println("_______________________________________________________________________________\n");
for(int i = 0; i < count; i++){
myItem[i].display();
}
}
public void displayOne()
{
int lfound = findItem();
if (lfound == -1){
System.out.println("\nInvalid input! Please try again:");
}else{
System.out.println("_______________________________________________________________________________\n");
System.out.println(" Inventory ");
System.out.println("_______________________________________________________________________________\n");
System.out.printf("\n%-6s%-20s%-24s%-12s%-6s\n", "ID:", "Name:", "Description:","On Hand:", "Unit Price:\n"); //Header
System.out.println("_______________________________________________________________________________\n");
myItem[lfound].display();
}
}
public void saveFile()
{
PrintWriter outputStream = null;
try{
outputStream =
new PrintWriter(new FileOutputStream("H:\\Java\\saveFile.txt"));
}catch (FileNotFoundException e)
{
System.out.println("Error!");
}
if(outputStream != null)
for(int i = 0; i < count; i++){
outputStream.println(myItem[i].getID());
outputStream.println(myItem[i].getOnHand());
outputStream.println(myItem[i].getUnitPrice());
outputStream.println(myItem[i].getName());
outputStream.println(myItem[i].getDesc());
}
outputStream.close();
}
}
用户类
import java.util.Scanner;
public class inventUser
{
public static void main(String[] args)
{
Inventory myInvent = new Inventory();
Scanner scannerObject = new Scanner(System.in);
int Choice = 0;
do{
dispMenu();
Choice = getChoice(scannerObject);
proChoice(Choice, myInvent);
}while (Choice !=0);
}
public static void dispMenu()
{
System.out.println("\n|=============================================|");
System.out.println("| |");
System.out.println("|******************Welcome********************|");
System.out.println("|_____________________________________________|");
System.out.println("| |");
System.out.println("| Press [1] To Add An Item |");
System.out.println("| |");
System.out.println("| Press [2] To Display One Item |");
System.out.println("| |");
System.out.println("| Press [3] To Display All Items |");
System.out.println("| |");
System.out.println("| Press [4] To Modify An Item |");
System.out.println("| |");
System.out.println("| Press [0] To Exit |");
System.out.println("|_____________________________________________|");
System.out.println("|=============================================|");
System.out.println("| Please Make Selection Now... |");
System.out.println("|=============================================|");
System.out.println("|_____________________________________________|\n");
}
public static int getChoice(Scanner scannerObject)
{
boolean x = false;
int pChoice = 0;
do{
try{
pChoice = scannerObject.nextInt();
x = true;
}catch (Exception e){
scannerObject.next();
System.out.println("\nInvalid command! Please try again:\n");
}
}while (x == false);
return pChoice;
}
public static void proChoice(int Choice, Inventory myInvent)
{
switch(Choice){
case 1: myInvent.addItem();
break;
case 2: myInvent.displayOne();
break;
case 3: myInvent.displayAll();
break;
case 4: myInvent.modify();
break;
case 0: System.out.println("\nHave a nice day!");
break;
}myInvent.saveFile();
}
}
根据我的讲师的说法,我需要在库存类中使用保存和读取文件的方法。我需要在我的用户类中调用它们。虽然我的 Item ID 变量有一个“getter”,但不允许我使用“setter”。
我对 Java 还是很陌生,所以请原谅任何新手错误。再次,非常感谢任何帮助!我查看了我的书并用谷歌搜索了示例,但找不到与我的情况相关的任何内容。
最佳答案
要使用 FileInputStream 读取文件,只需使用:
Scanner input = new Scanner(new FileInputStream("path_to_file"));
使用Scanner的方法进行读取
while(input.hasNextLine()) { //or hasNextInt() or whatever you need to extract
input.nextLine() //... read in a line of text from the file
}
如果您希望使用 File 类方法执行任何文件操作,您也可以使用 File 类
File myTextFile = new File("path_to_file");
Scanner input = new Scanner(new FileInputStream(myTextFile));
你当然需要捕获 FileNotFoundException
否则,它实际上与您为 PrintWriter 所做的一样。只需将FileOutputStream
切换为FileInputStream
,将PrintWriter
切换为Scanner
即可,切换时不要忘记先关闭文件从写入或读取文件:
input.close() // or output.close()
关于Java Inventory - 如何使用 FileInputStream 读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29664951/
我正在尝试创建一个库存系统。我有三个脚本:Player、GoundItem和ItemObject。播放器脚本将我与之碰撞的对象添加到清单中。GoundItem脚本附加到游戏世界中的对象,而ItemOb
我正在尝试通过脚本在销售订单的行项目上填充库存详细信息子记录。该脚本是一个用户事件脚本,将在提交前运行。此时用户已经输入了行项目信息:即。项目、数量、批号(自定义选择字段,其中选项是库存编号)。 我使
我正在我的剧本中尝试以下任务。但不执行暂停。我希望在删除每个主机后播放应该暂停 30 秒。 name: delete host from the NagiosXI shell: curl -k -XD
我想从 ansible-inventory 获取主机组名称列表(仅),但是我必须使用 grep 根据已知的组名称模式来修剪列表 - 例如 干净的输出但凌乱的命令行,需要提前知道组名模式: ansibl
我正在尝试从仅在单个组中运行的 playbook 中获取 list 文件中所有主机的 IP 列表。 假设有以下库存文件: [dbservers] db1.example.com db2.example
我在这个程序上遇到了障碍。 我有一个程序,涉及创建一个涉及凯迪拉克“库存”的程序,除此之外,我找不到问题的答案。 我只是不知道该怎么办。我将提供说明,然后发布我到目前为止所掌握的语法。 这是我必须做的
好吧,我的小程序没有编译,我在谷歌上搜索了一些答案,但没有一个起作用。 (比如把public带出公开课)... 这是我的代码:http://www.so.pastebin.com/MBjZGneg 这
我们正在尝试在自定义页面(不是 Inventory ID Int 字段)中实现“InventoryCD”(字符串)字段。我们需要这个 InventoryCD 字段像 Stock Item Invent
我正在做一个简短的项目,作为一种电子商店库存。以下是文本文件中的商品编号、描述、数量和价格列表: 65321,Tablet,54,150.00 91524,Monitors,24,125.50 250
我的要求如下所示,我有一个 Ansible list 文件,它根据下面显示的组件分为一些组: [all] node1 node2 node3 node4 [webapp] node3 node4 [u
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
编码一个可以包含 6 个项目的库存可能看起来像这样: class Inventory { private: Item[6] m_items; }; 现在另一方面,一个项目看起来
我遇到异常: com.android.vending.billing.util.IabException: Error refreshing inventory (querying prices of
我正在尝试创建一个可以容纳任何对象的库存系统 例如 struct Ore{ string name; int Size; }; struct Wood{ string name
我不明白为什么我在启动我的应用程序时不断收到以下消息: Error: Failed to query inventory: IabResult: Error refereshing inventory
在本学期的最后一项作业中,我必须创建一个包含 Item 对象数组的库存程序。每个项目都包含一个 ID(在您添加项目时分配并且不能修改)、名称、描述、现有项目数量和单价。 我还需要使用文件 I/O 流来
我需要开发一个库存和销售系统。 对于库存,我需要能够跟踪理想的库存水平、当前的库存水平、再订货点、成本、售价等。 并非库存中的每件商品都是“可销售的”。例如,我可能想要保存用于苏打水的塑料杯的库存。意
您好,我正在尝试将应用内购买添加到我的应用中它以空值返回。唯一改变的是我必须卸载该应用程序并重新运行它。我已经在应用程序和开发人员控制台中检查了我的 skus,当我运行 IabHelper 启动设置时
ansible 的手册页和 ansible-playbook定义 -i选项为: -i PATH, --inventory=PATH The PATH to the inventory h
我有以下库存: all: children: # Declare the front container group srv0: hosts: ocp-
我是一名优秀的程序员,十分优秀!