java中的文件输出不工作
所以我的家庭作业是创建一个停车场模拟器,它接收来自input.txt文件的查询,这些查询作为JSON对象数组传递,其中包含一个字符串查询和一个int parkingID。对于每一个查询,我都需要执行一个操作。当我试图将信息输出到文件时,什么也没有发生。你能看看我做错了什么吗java中的文件输出不工作,java,Java,所以我的家庭作业是创建一个停车场模拟器,它接收来自input.txt文件的查询,这些查询作为JSON对象数组传递,其中包含一个字符串查询和一个int parkingID。对于每一个查询,我都需要执行一个操作。当我试图将信息输出到文件时,什么也没有发生。你能看看我做错了什么吗 import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; impor
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
这里是主要功能
public class Company{
public static void main(String[] args) throws Exception{
String content = new
String(Files.readAllBytes(Paths.get("input.txt")));
Gson gson= new GsonBuilder().create();
Type listType = new TypeToken<List<Query>>() {}.getType();
List<Query> queries = gson.fromJson(content,listType);
PrintWriter out = new PrintWriter("output.txt");
ParkingLot[] array = new ParkingLot[10];
array[0] = new ParkingLot(0);
int counter = 1;
for(int i =0; i < queries.size(); i++)
{
try{
String query = queries.get(i).getQuery();
int queryParkingID = queries.get(i).getParkingID();
if(query.equals("car entered"))
{
array[queryParkingID].carEntered();
}
else if(query.equals("car left"))
{
array[queryParkingID].carLeft();
}
else if(query.equals("Parking lot opened"))
{
array[counter] = new ParkingLot(counter);
counter++;
}
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(e);
String query = queries.get(i).getQuery();
int queryParkingID = queries.get(i).getParkingID();
if (queryParkingID == -1)
{
if(query.equals("bandwidth"))
{
out.println(array[queryParkingID].getBandwidth());
}
else if(query.equals("bandwidth all"))
{
out.println(ParkingLot.bandwidthAll);
}
else if(query.equals("parked"))
{
out.println(array[queryParkingID].getCarsParked());
}
else if(query.equals("parked all"))
{
out.println(ParkingLot.carsParkedAll);
}
else if(query.equals("revenue"))
{
out.println(array[queryParkingID].getRevenue());
}
else if(query.equals("revenue all"))
{
out.println(ParkingLot.revenueAll);
}
}
}
catch(NullPointerException e){
System.out.println(e);
}
catch(Exception e){
System.out.println(e);
}
}
out.close();
}
}
这是停车场课
public class ParkingLot {
private int parkingID;
private static int parkingFee = 5;
private static int maxCarCapacity = 30;
private int revenue;
private int carsParked;
static int carsParkedAll;
static int revenueAll;
private int bandwidth;
static int bandwidthAll;
public ParkingLot(int parkingID)
{
this.parkingID = parkingID;
revenue = 0;
carsParked = 0;
carsParkedAll = 0;
}
public void carEntered()
{
if(carsParked < maxCarCapacity )
{
revenue += parkingFee;
revenueAll += parkingFee;
carsParked++;
carsParkedAll++;
bandwidth++;
bandwidthAll++;
}
}
public void carLeft()
{
if(carsParked > 0)
{
carsParked--;
carsParkedAll--;
}
}
public int getCarsParkedAll() {
return carsParkedAll;
}
public int getRevenueAll() {
return revenueAll;
}
public int getBandwidth() {
return bandwidth;
}
public void setBandwidth(int bandwidth) {
this.bandwidth = bandwidth;
}
public int getBandwidthAll() {
return bandwidthAll;
}
public static int getParkingFee() {
return parkingFee;
}
public static void setParkingFee(int parkingFee) {
ParkingLot.parkingFee = parkingFee;
}
public int getParkingID() {
return parkingID;
}
public void setParkingID(int parkingID) {
this.parkingID = parkingID;
}
public int getMaxCarCapacity() {
return maxCarCapacity;
}
public void setMaxCarCapacity(int maxCarCapacity) {
ParkingLot.maxCarCapacity = maxCarCapacity;
}
public int getRevenue() {
return revenue;
}
public void setRevenue(int revenue) {
this.revenue = revenue;
}
public int getCarsParked() {
return carsParked;
}
public void setCarsParked(int carsParked) {
this.carsParked = carsParked;
}
}
我们还必须处理异常,因此我必须将out部分移动到catch块中,以便在到达越界异常时可以打印出来
非常感谢您的帮助。不清楚该代码应该做什么,这是一条漫长的路要走。但是,您只能在异常捕获处理程序中写入out,这是不对的,因为越界异常捕获-1并在该异常中使用它来输出数据。尽管它仍然不工作,即使它不在catch块中,因为
printwitter
通常是可以工作的,但我想问题是在if块中。您可以使用调试器或添加printfs进行调试。目前还不清楚这些代码应该做什么,这是一条很长的路要走。但是,您只能在异常捕获处理程序中写入out,这是不对的,因为越界异常捕获-1并在该异常中使用它来输出数据。尽管它仍然不工作,即使它不在catch块中,因为printwitter
通常是可以工作的,但我想问题是在if块中。您可以使用调试器或添加printfs进行调试。
public class ParkingLot {
private int parkingID;
private static int parkingFee = 5;
private static int maxCarCapacity = 30;
private int revenue;
private int carsParked;
static int carsParkedAll;
static int revenueAll;
private int bandwidth;
static int bandwidthAll;
public ParkingLot(int parkingID)
{
this.parkingID = parkingID;
revenue = 0;
carsParked = 0;
carsParkedAll = 0;
}
public void carEntered()
{
if(carsParked < maxCarCapacity )
{
revenue += parkingFee;
revenueAll += parkingFee;
carsParked++;
carsParkedAll++;
bandwidth++;
bandwidthAll++;
}
}
public void carLeft()
{
if(carsParked > 0)
{
carsParked--;
carsParkedAll--;
}
}
public int getCarsParkedAll() {
return carsParkedAll;
}
public int getRevenueAll() {
return revenueAll;
}
public int getBandwidth() {
return bandwidth;
}
public void setBandwidth(int bandwidth) {
this.bandwidth = bandwidth;
}
public int getBandwidthAll() {
return bandwidthAll;
}
public static int getParkingFee() {
return parkingFee;
}
public static void setParkingFee(int parkingFee) {
ParkingLot.parkingFee = parkingFee;
}
public int getParkingID() {
return parkingID;
}
public void setParkingID(int parkingID) {
this.parkingID = parkingID;
}
public int getMaxCarCapacity() {
return maxCarCapacity;
}
public void setMaxCarCapacity(int maxCarCapacity) {
ParkingLot.maxCarCapacity = maxCarCapacity;
}
public int getRevenue() {
return revenue;
}
public void setRevenue(int revenue) {
this.revenue = revenue;
}
public int getCarsParked() {
return carsParked;
}
public void setCarsParked(int carsParked) {
this.carsParked = carsParked;
}
}
{"parkingID":-3,"query":"bandwidth"}