gpt4 book ai didi

Java StringTokenizer 不同的数据类型

转载 作者:行者123 更新时间:2023-12-01 09:19:20 26 4
gpt4 key购买 nike

我最近在大学进行了一次java小类测试,我需要帮助。

我有一个名为“Products”的对象,它采用(String、double、int)作为参数。

我创建了一个ArrayList

ArrayList<Product> products = new ArrayList<>();

我想做的是使用 StringTokenizer 读取这种格式并将它存储到单独的对象中,然后我想打印出对象内容。

PR0001 7.99 10
PR0002 29.99 0
PR0003 5.99 25
PR0004 99.99 50
PR0005 17.99 15
PR0006 15.99 0
PR0007 19.99 35
PR0008 39.99 40
PR0009 2.99 0
PR0010 3.99 5

我的主要方法是:

package objects;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.StringTokenizer;
public class main_object_class
{
public static void main(String[] args)
{
ArrayList<Product> products = new ArrayList<>();
String fileName = "products.txt";

try
{
Scanner file = new Scanner(new File(fileName));
while(file.hasNextLine())
{
StringTokenizer strToken = new StringTokenizer(file.next(), " ");
while(strToken.hasMoreTokens())
{
String pCode = strToken.nextToken();
System.out.println("pCode Works");
double pPrice = Double.parseDouble(strToken.nextToken());
System.out.println("pPrice Works");
int pQuantity = Integer.parseInt(strToken.nextToken());
System.out.println("pQuantity Works");
products.add(new Product(pCode,pPrice,pQuantity));
System.out.println("Storing Works");
}
}

for(int i=0;i<products.size();i++)
{
System.out.println(products);
}

}catch(FileNotFoundException e)
{
e.printStackTrace();
}
}
}

我的产品方法:

package objects;
public class Product
{
private String pCode = "";
private double pPrice = 0;
private int pQuantity = 0;

public Product(String c, double p, int q)
{
pCode = c;
pPrice = p;
pQuantity = q;
}

public void setCode(String c)
{
pCode = c;
}

public String getCode()
{
return pCode;
}

public void setPrice(double p)
{
pPrice = p;
}

public double getPrice()
{
return pPrice;
}

public void setQuantity(int q)
{
pQuantity = q;
}

public int getQuantity()
{
return pQuantity;
}

@Override
public String toString()
{
return "Code : " + getCode() + "\tPrice : $" + getPrice() + "\tQuantity : " + getQuantity();
}


}

我的错误:

run:
pCode Works
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at objects.main_object_class.main(main_object_class.java:24)
C:\Users\Alex\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

我非常感谢您提供的所有意见。我已经尝试了所有解决方案并且它们都有效。但我会选择@Jerin Joseph 解决方案!

最佳答案

  1. 逐行读取文件,Scanner::nextLine() 一次读取一行。

    StringTokenizer strToken = new StringTokenizer(file.nextLine(), "");

  2. 删除while(strToken.hasMoreTokens()),您需要检查您解析的每个 token 。

将其更改为,

String pCode = "";
double pPrice = 0;
int pQuantity = 0;

if(strToken.hasMoreTokens()){
pCode = strToken.nextToken();
System.out.println("pCode Works");
}
if(strToken.hasMoreTokens()){
pPrice = Double.parseDouble(strToken.nextToken());
System.out.println("pPrice Works");
}
if(strToken.hasMoreTokens()){
pQuantity = Integer.parseInt(strToken.nextToken());
System.out.println("pQuantity Works");
}
products.add(new Product(pCode,pPrice,pQuantity));
System.out.println("Storing Works");

关于Java StringTokenizer 不同的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272224/

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