问题描述
- 有关java文件操作的问题
-
有一个java程序,
就是统计幼儿园小朋友需要的铅笔(一支铅笔2元)的总价
我已经用面向对象的思想实现了这个程序,
程序输出是一行行的
姓名 年纪 需要铅笔的数目 某小朋友总价
最后输出所有的价格
(例如 小明 4 5 10元
小李 5 4 8元
......)现在需要从文件读取一行行的信息(就是上面的格式),并计算总价,这个该怎么做?
解决方案
你好,,根据你的需求,,我是写了一个实体类,,然后用list遍历输出,,代码如下:
public class User {
private String name;
private int age;
private int pencilNum;
private int totalPrice;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getPencilNum() {
return pencilNum;
}
public void setPencilNum(int pencilNum) {
this.pencilNum = pencilNum;
}
public int getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(int totalPrice) {
this.totalPrice = totalPrice;
}
public String toString(){
return name + " " + age + " " +pencilNum + " " +totalPrice+"元";
}
}
public class TestPencil {
public static void main(String[] args) {
List users=new ArrayList();
String info="";
String name="";
int age=0;
int pencilNum=0;
int totalPrice=0;
Scanner in=new Scanner(System.in);
while(in.hasNextLine()){
User u=new User();
info=in.nextLine();
if(info.equals("退出")){
in.close();
break;
}
String message[]=info.split(" ");
name=message[0];
age=Integer.parseInt(message[1]);
pencilNum=Integer.parseInt(message[2]);
totalPrice=pencilNum*2;
u.setName(name);
u.setAge(age);
u.setPencilNum(pencilNum);
u.setTotalPrice(totalPrice);
users.add(u);
}
in.close();
for(User u:users){
System.out.println(u);
}
}
}
最后输入退出的时候就可以看到结果了
解决方案二:
1。java测试文件结尾
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class MainClass {
public static void main(String[] args) throws IOException {
DataInputSt......
答案就在这里:java文件操作的一些问题
解决方案三:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class GetTotal {
/**
* @param path :文件的路径
* @param price :单价
* @return :返回总价格
*/
public static int inputFile(String path,int price){
File file = new File(path);
int num = 0;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK"));
String line = null;
while((line=br.readLine()) != null){
System.out.println(line);
String[] s = line.split("s+");
if(s.length > 2){
num += Integer.parseInt(s[2]);
}else{
System.out.println("这行信息有格式错误:"+line);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return num*2;
}
public static void main(String[] args) {
GetTotal gt = new GetTotal();
System.out.println(gt.inputFile("d:test.txt",2));
}
}