gpt4 book ai didi

java - 如何使用正在读取的文本文件的值填充 "ragged"数组?

转载 作者:行者123 更新时间:2023-12-01 16:02:58 26 4
gpt4 key购买 nike

我是 Stack Overflow 的新手,这是我的第一个问题/帖子!我正在使用 Java 为学校开发一个项目。我遇到麻烦的第一部分:

  1. 读取文件中的每一行(在我的帖子末尾列出)一次
  2. 创建一个“参差不齐”的整数数组,4 x X,其中我的 4 行将是“区域编号”(在区域编号中找到的数字)列,并填充每一列与该地区的州人口。

因此,例如,第 1 行将保存区域 1 的州人口,产生 6 列,第 2 行代表区域 2,产生 7 列,依此类推,产生“参差不齐”的数组。

我的问题是如何填充,或者用我的文件读取结果填充数组的最佳方法是什么?我知道如何声明数组、初始化数组并在数组中创建空间,但我不确定如何在 State 类中编写方法以将文件读取的结果填充到数组中。现在,当我尝试使用 Netbeans 编译此代码时,出现“越界”错误。

这是我的 Main 和 State 代码。我的输入文件列在其下方:

import java.util.*;
import java.io.*;

public class Main
{
public static void main(String[] args) throws IOException
{
// create new jagged array obj and fill it with some
// initial "dummy" values
int[][] arrPopulation =
{
{0,1,2,3,4,5},
{0,1,2,3,4,5,6},
{0,1,2,3,4,5,6,7,8,9},
{0,1,2,3,4,5,6,7,8,9,10}
};//end array declaration

// read in file States.txt, instantiate BufferedReader object,
// set new BufferedReader object to variable @newLine
FileReader f = new FileReader("States.txt");
BufferedReader br = new BufferedReader(f);
String newLine = br.readLine();

for (int rows = 0; rows < arrPopulation.length; rows++)
{
for (int col = 0; col < arrPopulation[col].length; col++) {
System.out.print(arrPopulation[rows][col] + " ");
}
// display on new lines; print out in a "table" format
System.out.println();
} // end for

State newState = new State(newLine);
int count = 0;
while(newLine != null)
{
newLine = br.readLine();
System.out.println(newState.getRegionNum());
}// end while
br.close();//close stream
} // end public static void main
} // end main

这是到目前为止我的州立类(class)的内容:

import java.util.*;

public class State
{
private String statePop, stateNum, regionNum;

public State(String fileRead)
{
statePop = fileRead.substring(32,39);
regionNum = fileRead.substring(55,fileRead.length());
} // end constructor

public int getStatePop()
{
int population = Integer.parseInt(statePop);
return population;
} // @method getStatePop end method

public int getRegionNum()
{
int numOfRegion = Integer.parseInt(regionNum);
return numOfRegion;
}// end getRegionNum

public int getAvgPop()
{
int average = 2+2;
return average;
// total number of populations
// divide number of populations
}// @return the average population of states

public int getStateTotal()
{
//initialize static variable
int totalPopulation = 0;
int stateTotal = this.getStatePop() + totalPopulation;
return stateTotal;
} // @return stateTotal

public String toString()
{
return statePop + " " + stateNum + " ";
} // @method end toString method
} // end State class

列的名称(在读取的文件中未使用,仅用于解释目的)是:

州首府缩写人口区域区域编号

Washington     Olympia        WA 5689263West           6
Oregon Salem OR 3281974West 6
Massachusetts Boston MA 6147132New_England 1
Connecticut Hartford CT 3274069New_England 1
Rhode_Island Providence RI 988480New_England 1
New_York Albany NY18146200Middle_Atlantic2
Pennsylvania Harrisburg PA12001451Middle_Atlantic2
New_Jersey Trenton NJ 8115011Middle_Atlantic2
Maryland Annapolis MD 5134808Middle_Atlantic2
West_Virginia Charleston WV 1811156Middle_Atlantic2
Delaware Dover DE 743603Middle_Atlantic2
Virginia Richmond VA 6791345Middle_Atlantic2
South_Carolina Columbia SC 3835962South 3
Tennessee Nashville TN 5430621South 3
Maine Augusta ME 1244250New_England 1
Vermont Montpelier VT 588632New_England 1
New_Hampshire Concord NH 1185048New_England 1
Georgia Atlanta GA 7642207South 3
Florida Tallahassee FL14915980South 3
Alabama Montgomery AL 4351999South 3
Arkansas Little_Rock AR 2538303South 3
Louisiana Baton_Rouge LA 4368967South 3
Kentucky Frankfort KY 3936499South 3
Mississippi Jackson MS 2752092South 3
North_Carolina Raleigh NC 7546493South 3
California Sacramento CA32182118West 6
Idaho Boise ID 1228684West 6
Montana Helena MT 880453West 6
Wyoming Cheyenne WY 480907West 6
Nevada Carson_City NV 1746898West 6
Utah Salt_Lake_City UT 2099758West 6
Colorado Denver CO 3970971West 6
Alaska Juno AK 614010West 6
Hawaii Honolulu HI 1193001West 6

我走的路正确吗?

感谢您提前提供的任何帮助,对于这么长的帖子表示歉意!

最佳答案

collections 包在这里会很有用。

  1. 创建 map <整数,列表<<整数>>
  2. 当您一次一行扫描文件时,获取区域编号和人口。
    1. 区域编号是 map 中的键吗?
      1. 没有。然后创建一个新的List 并将其添加到 map 中。现在是了。
    2. 将人口添加到列表中。
  3. 现在, map 应该有四个条目。创建外部数组,如下所示: int [ ] [ ] array = new int [ 4 ] [ ] ;
  4. 然后迭代映射中的列表并填充外部数组,如下所示:array[i]=new int[list.size()];
  5. 然后迭代列表并填充内部数组,如:array[i][j]=list.get(j);

关于java - 如何使用正在读取的文本文件的值填充 "ragged"数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3367834/

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