[英]how to bubble sort through a text file in java
如何通过将值分配给数组来对文本文件进行适当的冒泡排序。 在下面的代码中,我尝试将文本文件中的值分配给字符串,同时仍然需要提取某些内容。 然后,我使用了for循环将已获取的内容分配给数组。 然后尝试使用冒泡排序将希望获取的数字从最高到最低排序。 但是我得到这个作为输出:
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78
12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29
这是我的代码:
try{
int i;
String ss;
FileReader fr;
fr = new FileReader (new File("X:\\file.txt"));
BufferedReader br = new BufferedReader (fr);
while ((ss = br.readLine()) != null) {
String[] sv = ss.split(" ");
String splayer_name=sv[1];
String s_player_score=sv[2];
for(int xy=0;xy<player_name.length;xy++){
player_name[xy]=splayer_name;
player_score[xy]=Integer.parseInt(s_player_score);
}
bubble_srt(player_score, player_score.length);
for(i = 0; i <player_score.length; i++)
System.out.print(player_score[i]+" ");
System.out.println();
}
}catch(Exception e){}
请帮忙,
更新:有人问文件结构,您指的是这个:这是file.txt,我要提取的是最右边的数字:
1 a 5
2 b 10
5 x 4
7 h 20
我认为您的主要问题在于循环:
for(int xy=0;xy<player_name.length;xy++){
player_name[xy]=splayer_name;
player_score[xy]=Integer.parseInt(s_player_score);
}
每次您读一行。 您要用splayer_name替换* player_name *数组的全部内容,并用s_player_score的int值替换* player_score *的全部内容。
我猜您正在尝试做的是在player_name和player-score中添加一个新条目。 这两个数组的大小必须等于文本文件中的行数,因此您可能要使用某种形式的List而不是数组。
对于两个存储阵列(或列表),一次添加一个名称,一次添加一个分数,我认为这将使您在尝试做的事情中获得成功。
bubble_srt()
调用bubble_srt()
while循环之外。 您将在每次迭代中替换全部内容,就像前面的答案正确指出的那样。 您只希望在读取整个文件内容之后进行排序。 由于您的文件可以是任何大小,因此除非您要执行两次读取以获取计数然后读入数组,否则无法预先初始化数组。 使用List会更好。 这是基本代码:
try { int i; String ss; FileReader fr; fr = new FileReader(new File("file.txt")); BufferedReader br = new BufferedReader(fr); int xy=0; List<String> player_name = new ArrayList<String>(); List<Integer> player_score = new ArrayList<Integer>();
\n\n } catch(Exception e){\n }\nwhile ((ss = br.readLine()) != null) { String[] sv = ss.split(" "); player_name.add(sv[1]); player_score.add(Integer.parseInt(sv[2])); } bubble_srt(player_score);
(修改您的气泡排序以接受列表输入)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.