gpt4 book ai didi

java - 从文本文件中提取数据元素

转载 作者:行者123 更新时间:2023-12-01 04:58:41 29 4
gpt4 key购买 nike

我正在制作一个应用程序,按每种颜色最有值(value)的 gem 来组织《魔兽世界》珠宝制作拍卖数据。为了做到这一点,我尝试将 json 数据库解析为数组——我知道只需我们使用 gson api 之类的东西来执行此操作很简单,但由于这是一个入门级 java 类的项目,我的教授已经说过我应该使用我们在类里面学到的东西来导入数据,也就是说我有以下代码来解析 json 数据并将其打印在屏幕上(仍在解析为数组)I've uploaded my data.json to here并包括我到目前为止的代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class jcFormat {

public static void main(String[] args) {
try {
File f = new File("c:\\ProgramData\\jcUtil\\data.json");
Scanner sc = new Scanner(f);

List<Auction> ahdata = new ArrayList<Auction>();
sc.nextLine();//eats line
sc.nextLine();//eats line
sc.nextLine();//eats line
while (sc.hasNextLine()) {
String line = sc.nextLine();
String[] details = line.split(",");
//get item as string
String itemz = details[1];
itemz = itemz.substring(7, itemz.length());
//convert itemz string to item int
int item = Integer.parseInt(itemz);
//get buyout as string
String buyoutz = details[4];
buyoutz = buyoutz.substring(9, buyoutz.length());
//convert buyoutz string to buyout int
int buyout = Integer.parseInt(buyoutz);
//get quantity as string
String quantityz = details[5];
quantityz = quantityz.substring(11, quantityz.length());
//convert quantityz string to quantity int
int quantity = Integer.parseInt(quantityz);

Auction a = new Auction(item, buyout, quantity);
ahdata.add(a);
}

for (Auction a : ahdata) {
System.out.println(a.toString());
}

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

class Auction {

private int item;
private int buyout;
private int quantity;

public Auction(int item, int buyout, int quantity) {
this.item = item;
this.buyout = buyout;
this.quantity = quantity;
}

/**
* @return the item
*/
public int getItem() {
return item;
}

/**
* @param item the item to set
*/
public void setItem(int item) {
this.item = item;
}

/**
* @param buyout the buyout to set
*/
public void setBuyout(int buyout) {
this.buyout = buyout;
}

/**
* @return the buyout
*/
public int getBuyout() {
return buyout;
}

/**
* @return the quantity
*/
public int getQuantity() {
return quantity;
}

/**
* @param quantity the quantity to set
*/
public void setQuantity(int quantity) {
this.quantity = quantity;
}

@Override
public String toString() {
return this.item + "\t" + this.buyout + "\t" + this.quantity;
}
}

我当前遇到的问题是这个错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -9 at java.lang.String.substring(String.java:1958) at jcutil.jcFormat.main(jcFormat.java:40) Java Result: 1

如果我在 data.json 的前 10 行上测试我的代码,它工作得很好,所以我试图找出哪些行导致了问题,并且作为 java 的新手,我的调试技能并不好。非常好,所以任何帮助弄清楚我为什么会收到此错误的帮助将不胜感激。

最佳答案

假设您使用的是 eclipse,在该行上放置一个断点

buyoutz = buyoutz.substring(9, buyoutz.length());

并在 Debug模式下运行应用程序,这将允许您查看问题所在。

关于java - 从文本文件中提取数据元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675559/

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