*擡頭這在技術上是HOMEWORK,但它不會讓我添加標記由於某種原因我不斷收到一個java.lang.arrayindexoutofboundsexception 5的錯誤,但我不能找到錯誤
編譯器似乎特別指向了specialPrintData()方法,但我真的無法弄清楚什麼是錯的。這是完成我的程序的最後一步,因此歡迎所有幫助!
import java.util.Scanner;
import java.io.File;
public class Lab07
{
static final int MAX = 100; // global constant
static public int readFile(String [ ] fd, String fileName) throws Exception
{
File f = new File(fileName);
Scanner input = new Scanner(f);
int count = 0;
while(count < fd.length && input.hasNextLine())
{
fd[count] = input.nextLine();
count++;
}
if (input.hasNext())
{
System.out.println("File is larger than array. Program is terminating.");
System.exit(0);
}
else
{
System.out.println("Read " + count + " int values from file.");
}
input.close();
return count;
}
static public void printData(String [ ] fd, int count)
{
for(int i = 0; i < count; i++)
{
System.out.println( fd[i]);
}
System.out.println();
}
static public void specialPrintData(String [ ] fd, int count)
{
for(int i = 3; i < count; i++)
{
System.out.printf(" %4s ", fd[i]);
}
}
static public int countWords(String str)
{
int count = 1;
for (int i = 0; i <= str.length() - 1; i++)
{
if (str.charAt(i) == ' ' && str.charAt(i+1) != ' ')
{
count++;
}
}
return count;
}
static public void printNicelyFormattedData(String [ ] fd, int count)
{
int numKids = 0;
for(int i = 0; i < count; i++)
{
if (countWords(fd[i]) > 2)
{
numKids = ((countWords(fd[i]) - 3));
}
String [ ] list1 = fd[i].split(" ");
System.out.println(list1[0] + " and " + list1[1] + " " + list1[2] + " have " + numKids + " children:" + "\n");
specialPrintData(list1, count);
}
System.out.println();
}
static public void main(String args [ ]) throws Exception
{
if(args.length < 1)
{
System.out.println("Error running program!");
System.out.println("Usage: java Lab07 L7d.txt");
System.exit(0);
}
String [ ] fileData = new String[MAX];
int count = 0;
count = readFile(fileData, args[0]);
System.out.println("Array of file data contains " + count + " lines of data:");
printData(fileData, count);
System.out.println("*******************************************************");
System.out.println("Family Data for past and present presidential families:");
printNicelyFormattedData(fileData, count);
}
}
家庭作業不再是SO中的標記http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated –
您是否還嘗試過調試您的程序? –
發佈堆棧跟蹤。 – Maximin