package arraySort;
import java.io.IOException;
import java.io.File;
import java.util.*;
public class openFile {
int x;
static int i;
static int[] myList = {100};
public static void main(String[] args){
try{
File myFile = new File("arraySort.txt");
Scanner scan = new Scanner(myFile);
while(scan.hasNext()){
myList[i] = scan.nextInt();
BubbleSort(myList);
System.out.println(myList[i]);
}
catch(IOException e){
System.out.println("File not found!");
}
}
public static void BubbleSort(int[] x){
if (x[i] > x[i + 1]){
int temp;
temp = x[i];
x[i] = x[i+1];
x[i+1] = temp;
}
}
}
答案 0 :(得分:6)
而不是直接给出答案,这里有几个提示:
BubbleSort()
。
您应该只调用BubbleSort()
一次, 之后您已经读取了文件中的所有数字。意思是,将调用移到while
循环之外。
您永远不会增加变量i
,因此您每次只需通过myList[0]
循环覆盖while
。
数组不可调整大小。如果您尝试分配到myList[1]
或myList[2]
,则会收到ArrayIndexOutOfBoundsException
错误。有几种方法可以解决这个问题 - 一种方法是将其从int[] myList = {100}
更改为ArrayList myList = new ArrayList()
。您可以使用myList.add(number)
为其添加数字,然后使用myList.get(i)
进行查找。
答案 1 :(得分:2)
您的程序有几个问题,而不仅仅与排序部分有关。
static int[] myList = {100};
此行将myList
定义为大小为1的数组,其中包含单个元素100
。然后,你的主循环是
while(scan.hasNext()) {
myList[i] = scan.nextInt();
BubbleSort(myList);
System.out.println(myList[i]);
}
您不会在此循环中增加i
,因此您只需使用从文件中读取的任何值覆盖myList
中的单个值。当您的Bubblesort
函数尝试访问myList[i+1]
时,它会抛出ArrayIndexOutOfBoundsException
,因为索引i+1
(等于1
时没有元素,因为您没有不要增加i
)。
一般情况下,特别是初学者,使用ArrayList
比使用常规数组更好。此外,您应首先填写数组,并且只有在您尝试对其进行排序时才具有所有元素。最后,最好将变量设为局部而不是类成员。这样会使main
函数类似
ArrayList myList = new ArrayList();
while(scan.hasNext()) {
myList.append(scan.nextInt());
}
Bubblesort(myList);
然后更改Bubblesort
以获取ArrayList
,然后您还可以使i
方法的循环索引Bubblesort
成为本地。完成后,您可以使用冒泡排序算法。请记住要小心那里的数组索引,以便永远不会访问数组的边界。
答案 2 :(得分:1)
http://www.leepoint.net/notes-java/data/arrays/32arraybubblesort.html< - 您的一些冒泡排序示例;)
答案 3 :(得分:0)
改变这个:
try{
File myFile = new File("arraySort.txt");
Scanner scan = new Scanner(myFile);
while(scan.hasNext()){
myList[i] = scan.nextInt();
BubbleSort(myList);
System.out.println(myList[i]);
}
catch(IOException e){
System.out.println("File not found!");
}
为:
try{
File myFile = new File("arraySort.txt");
Scanner scan = new Scanner(myFile);
while(scan.hasNext()){
myList[i] = scan.nextInt();
}
catch(IOException e){
System.out.println("File not found!");
}
BubbleSort(myList);
System.out.println(myList[i]);
}
的回答更改排序方法答案 4 :(得分:0)
完成此作业后,您可能会喜欢Collections.sort():)
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html#sort%28java.util.List%29