gpt4 book ai didi

java - 调用磁盘文件程序时控制台出错

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:17 25 4
gpt4 key购买 nike

我正在编写一个程序,该程序调用文件位置和文件名并将其放入字符串数组中。该程序可以编译,但运行时会出现控制台错误。我是java新手,我不知道如何解决这些控制台错误或它们发生的原因。如果有人能帮助我那就太好了。我用注释标记了两个错误的位置。第一个错误在 main 方法中,另一个错误在 bubblesort 方法中。

编辑:这是我收到的错误,

线程“main”中出现异常 java.lang.NullPointerException 在 java.lang.String.compareTo(来源未知) 在Assignment7.bubbleSort(Assignment7.java:63) 在Assignment7.main(Assignment7.java:21)

当我点击它时,它们会将我带到我在下面指出的位置。

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

public class program3 {

public static void main(String[] args) throws IOException {


String[] list2, targets, list1;
list1 = getInput("C:\\Desktop\\input1.txt");
list2 = bubbleSort(list1); //Console error here
targets = getInput("C:\\Desktop\\targets1.txt");

double seqAvg = seqSearch(list1, targets);
double binAvg = binSearch(list2, targets);
System.out.println("Average number of searches for the seqeuntial search is " + seqAvg);
System.out.println("Average number of searches for the binary search is " + binAvg);

}//end of main method

public static String[] getInput(String filename) throws IOException {
String[] inputArr = new String[100];

Scanner in = new Scanner(new File(filename));
int count = 0;
while(in.hasNext()) {
if (count < 100){
inputArr[count++] = in.next();
} else {
break;
}

}
in.close();
return inputArr;

}// end getInput method



//This method will sort the array and pass it onto a list.
public static String[]bubbleSort(String[] inputArr) {

String[] Array2 = inputArr.clone();

for (int i = 0; i<Array2.length; i++)
{
for (int j = 0; j<Array2.length; j++)
{
if (Array2[i].compareTo(Array2[i+1]) > 0) //Console error here
{
String temp = Array2[i];
Array2[i] = Array2[j];
Array2[j] = temp;
}
}
}
return Array2;

}// End of sort method.

//This method will do a sequential search on the list1
public static double seqSearch(String[] list1, String[] targets){
{
for (int j = 0; j < list1.length; j++)
{
for(String str:targets){
if(list1[j].equalsIgnoreCase(str)){
return j;
}
}
{
return j;
}
}
return -1;
}

}//end of sequentialSearch method


//This method will do a binary search on the list
public static int binSearch(String[] list1, String[] targets) {
int lo = 0;
int hi = list1.length - 1;
int mid = -1;

while( lo <= hi ) {
mid = (lo+hi)/2;

for(String str:targets){
if(list1[mid].equalsIgnoreCase(str)){
return mid;
}

hi = mid-1;


} for(String str:targets){
if(list1[mid].equalsIgnoreCase(str)){
return mid;
}
}

lo = mid+1;
{
return mid;
}
}
return mid;
}

}//End of program3

最佳答案

您会得到一个ArrayIndexOutOfBoundsException,因为在这一行的 bubbleSort 方法中:

if (Array2[i].compareTo(Array2[i+1]) > 0)

索引 i+1 大于数组长度。我建议你这样改变冒泡排序方法中的循环:

for (int i = 0; i<Array2.length; i++)
{
for (int j = 0; j<Array2.length-1; j++)
{
if (Array2[j].compareTo(Array2[j+1]) > 0)
{
String temp = Array2[j];
Array2[j] = Array2[j+1];
Array2[j+1] = temp;
}
}
}

关于java - 调用磁盘文件程序时控制台出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40333882/

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