gpt4 book ai didi

java - ArrayList 给出错误(加上方法帮助)

转载 作者:行者123 更新时间:2023-12-01 08:55:08 25 4
gpt4 key购买 nike

嗨,我正在使用扫描仪和数组列表进行作业

数据包对象具有唯一的 ID 号、重量(以磅为单位,保留 2 位小数)以及目的地和来源的状态缩写。
Packet 类描述一个数据包,有变量 idNumber、weight,以及类型分别为 int、double、String 和 String 的 stateDest 和 stateOrig。除此之外,它还有以下方法• boolean isHeavy (),当数据包超过 10 磅时返回 true,否则返回 false。• boolean isInState(),当数据包被运送到与原始状态相同的目标状态时,返回 true。• String toString() 返回 String,它是 Packet 对象的一行字符串表示形式。• double getWeight() 返回数据包重量。

创建一个名为“packetData.txt”的输入文件,其中包含以下 7 行。 “packetData.txt”文件中的每一行都包含有关一个数据包对象的信息。

1001 8.37 CA MO
1002 2.17 CT CA
1003 11.35 NY NY
1004 3.77 MA MA
1005 9.99 FL CT
1006 14.91 VT MA
1007 4.97 TX CA

类 Packages 具有shipmentList 和totalWeight 变量。

名为shipmentList的变量包含所有数据包的集合。

变量shipmentList是ArrayList类型。

ArrayList中的所有对象都是Packet类型。

Totalweight 变量指定所有数据包的总重量。

构造函数分配变量shipmentList和totalWeight。

变量totalWeight在类中声明时初始化为0.0,并在从文件中读取每个数据包时更新。

变量shipmentList是通过从上面指定的输入文件读取数据来分配的。

文件中的每一行都包含有关一个数据包对象的数据。

当您从输入文件中的一行读取数据时,应将 Packet 对象添加到shipmentList 类 Packages 具有方法:

• String toString(),返回有关整个数据包集合的字符串表示形式,并每行指定一个数据包对象。

• void displayHeavyPackages(),显示所有重的数据包。

• void displayInStatePackages() 显示具有相同状态的所有数据包出发地和目的地国家。您的代码必须使用 isInState() 方法。

• Packet displayMaxWeightPacket() 返回最重的数据包对象。

• void displayAverageWeight() 显示所有数据包的平均重量(保留两位小数)。使用完整的句子。

所有方法都是使用变量shipmentList和totalWeight编写的。除了 Packet 和 Packages 类之外,您的应用程序还应该具有仅包含 main 方法的 TestPackages 类。

向 Packet 类添加方法 String destinationLocation()。如果目标州是 CT、MA、RI 或 NY 之一,则该方法返回字符串“Local”;对于所有其他州,该方法返回字符串“NonLocal”。

向 Package 类添加方法:• void displayLocalPackets(),显示一个空行,然后标题“LOCAL PACKETS”,接下来显示发送到任何本地状态的所有本地数据包(每行显示一个数据包)。必须在代码中使用方法destinationLocation。

• void displayNonLocalPackets(),显示未发送到本地目的地的所有数据包。必须使用destinationLocation方法来编写代码。

我已经实现了尽可能多的功能,但我在两个类中遇到了不兼容的类型错误

import java.util.ArrayList;
import java.io.IOException;
import java.util.Scanner;
import java.io.*;
public class Packages
{
public ArrayList shipmentList;
double totalWeight = 0.0;
private int counter = 0;
public Packages() throws IOException
{
ArrayList<Packet> shipmentList = new ArrayList<Packet>();
String currentPacket;
Scanner fileScan, packetScan;
Scanner scan = new Scanner (System.in); //start scanner
Scanner fileInput = new Scanner(new File("packetData.txt"));//file input
while (fileInput.hasNextLine())
{
currentPacket = fileScan.nextLine();
packetScan = new Scanner (currentPacket);
int id = packetScan.nextInt();
double w = packetScan.nextDouble();
String s = packetScan.next();
String d = packetScan.next();
Packet temp = new Packet (id, w, s, d);
shipmentList.add(temp);
}
scan.close();
}
public void displayHeavyPackages()
{
System.out.println("The heavy packages are : ");
for(Packet mypacket : shipmentList)
{
if (mypacket.isHeavy())
{
System.out.println(mypacket);
}
}
}
public void displayInStatePackages()
{
System.out.println("These are the In-State Packages : ");
for(Packet mypacket : shipmentList)
{
if (mypacket.isInState())
{
System.out.println(mypacket);
}
}
}
public void displayAverageWeight()
{
double hold;
int count;
for(Packet mypacket : shipmentList)
{
hold += mypacket.weight;
count++;
}
System.out.println("The average weight is " + totalWeight);
}
public String toString()
{
String result = "The shipment \n";
for(Packet mypacket : shipmentList)
{
result += mypacket;
}
return result;
}
public Packet maxWeightPacket()
{

}
public void displayLocalPackets()
{
System.out.println("");
System.out.println("Local Packages");
for(Packet mypacket : shipmentList)
{
if (mypacket.destinationLocation())
{
System.out.println(mypacket);
}
}
}
public void displayNonLocalPackets()
{
System.out.println("");
System.out.println("Non Local Packages");
for(Packet mypacket : shipmentList)
{
if (mypacket.destinationLocation())
{
System.out.println(mypacket);
}
}
}
}

数据包类别

public class Packet
{
private int idNumber;
public double weight;
private String stateDest;
private String stateOrig;
public Packet(int id, double w, String sD, String sO)
{
idNumber = id;
weight = w;
stateDest = sD;
stateOrig = sO;
}
public boolean isHeavy()
{
return (weight > 10 );
}
public boolean isInState()
{
return (stateDest==stateOrig);
}
public String toString()
{
String result = "\nPacket id: " + idNumber + " State: ";
result += "From " + stateOrig + " To " + stateDest + " Weight: " + weight;
return result;
}
public double getWeight()
{
return weight;
}
public String destinationLocation()
{
if (stateDest = "CT")
{
return "Local";
} else if (stateDest = "MA")
{
return "Local";
}else if (stateDest = "RI")
{
return "Local";
}else if (stateDest = "NY")
{
return "Local";
}else
{
return "Non Local";
}
}
}

测试类

import java.io.*;
public class TestPackages
{
public static void main (String[] args) throws IOException
{
Packages shipment = new Packages();
System.out.println(shipment);
shipment.displayHeavyPackages();
shipment.displayInStatePackages();
shipment.maxWeightPacket();
shipment.displayAverageWeight()
}
}

最佳答案

您正在隐藏 shipmentList 变量,因此请更改

public class Packages
{
public ArrayList shipmentList;

public class Packages
{
ArrayList<Packet> shipmentList = new ArrayList<Packet>();

从构造函数中删除

  ArrayList<Packet> shipmentList = new ArrayList<Packet>();

其他错误

displayLocalPackets

更改为

if (mypacket.destinationLocation().equalsIgnoreCase ("local"))

displayNonLocalPackets 进行类似的更改

更多

还学习如何比较字符串提示: return (stateDest==stateOrig); 错误

还有

averageWeight的方法是错误的,你应该使用计算变量

public void displayAverageWeight()
{
double hold;
int count;
for(Packet mypacket : shipmentList)
{
hold += mypacket.weight;
count++;
}
System.out.println("The average weight is " + hold / count);
}

关于java - ArrayList 给出错误(加上方法帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com