冒泡排序仅输出0

时间:2014-03-11 21:31:58

标签: java

所以我的代码出了问题。我不得不编写一个程序,通过外部文本文件(基本上是随机顺序的随机数列表)对泡泡进行排序。所以我试着通过我的教授的步骤,尽管我做了,但我没有得到正确的输出。输出应该如下所示:

1 2 2 2 3 3 5 5 6 6 11 13 13 13 13 16 17 17 19 25 27 27 33 34 37 37 43 45 49 51 51 52 54 55 57 57 58 60 63 64 66 75 79 79 81 85 87 90 92 92 94 95 95 97 97 99 107 109 109 111 113 113 115 116 118 121 121 125 129 132 133 133 133 134 144 144 145 148 149 151 155 155 156 156 156 159 159 162 164 165 165 167 167 168 171 173 178 179 181 183 186 186 190 191 200 203 203 203 204 205 206 207 207 207 208 209 209 210 210 215 216 217 220 220 222 223 225 228 229 230 231 233 234 235 235 238 239 239 242 245 251 252 253 258 263 268 269 271 274 276 278 278 289 296 299 301 303 304 305 306 308 308 310 311 316 319 321 321 322 323 326 329 330 333 335 338 339 340 340 345 349 350 353 353 354 355 355 356 357 358 359 362 366 366 368 374 374 376 379 379 382 386 388 392 393 394 396 396 398 399 399 399 399 401 401 401 405 407 408 413 414 415 416 416 417 418 418 420 424 426 430 432 436 436 438 440 442 442 446 446 448 449 451 456 456 457 458 460 461 4 62 463 470 476 477 480 480 482 484 485 487 490 490 495 501 502 504 511 511 511 511 513 513 513 514 515 518 519 523 526 527 529 531 534 534 536 537 538 538 539 540 544 545 550 554 555 558 559 559 560 561 564 567 568 568 569 571 572 574 575 578 580 580 580 581 581 582 583 583 583 584 585 585 585 587 588 590 591 596 599 604 606 614 615 616 616 617 618 620 625 628 631 631 634 635 635 639 642 647 654 654 655 659 659 659 664 666 666 669 669 672 685 687 687 689 690 692 692 695 698 699 704 707 707 707 717 717 717 717 717 719 719 729 730 734 734 736 736 738 740 740 749 751 752 753 754 754 754 755 759 761 763 763 768 772 778 780 793 785 786 798 799 799 800 802 813 813 817 820 820 821 822 826 826 827 827 829 830 830 831 832 833 835 836 837 841 846 853 854 857 857 858 858 861 866 868 868 869 872 877 898 909 910 914 919 919 920 920 921 927 930 931 934 934 938 943 944 945 950 953 955 957 960 962 966 968 970 971 974 975 981 989 995 998 999 9 99

这是我的代码:

import java.io.*;
import java.util.*;
public class Prog481a
{
    public static void main(String[] args) throws IOException
    {
        Scanner kbReader = new Scanner(new File("C:\\Users\\Guest\\Documents\\java programs\\Prog121\\sort.in"));
        String line = kbReader.nextLine();
        String[] l1 = line.split("\n");
        int[] a = new int[l1.length];
        int temp;
        boolean fixed = true;
        while(fixed)
        {
            fixed = false;
        for(int i = 0; i<a.length-1; i++)
        {
            if(a[i] > a[i+1])
            {
                temp = a[i+1];
                a[i+1] = a[i];
                a[i] = temp;
                fixed = true;
            }
        }
       }
       for(int i = 0; i<a.length; i++)
       {
           System.out.println(a[i]);
       }
    }
}

所以一切都编译,但我的输出显示0,程序停止。现在我不确定我的代码到底出了什么问题。我一直在努力解决这个问题,但已经没有想到要去哪里看。有人可以提供一些指导/反馈,说明发生了什么以及如何解决这个问题?非常感谢所有帮助。

2 个答案:

答案 0 :(得分:2)

你永远不会把任何东西放在数组 a 中。 Int数组将所有内容初始化为0.拆分为“”(空格)而不是。和!你需要将它从字符串更改为int通过以下方式执行此操作:

Integer.parseInt(yourString);

答案 1 :(得分:0)

您永远不会在a中存储任何数据。由于a中的值已初始化为0,因此您实际上只是对所有0的数组进行排序。

你有:

String[] l1 = line.split("\n");
int[] a = new int[l1.length];

您将该行拆分为l1(虽然不正确;您指定&#39; \ n&#39;但您的令牌被&#39;&#39;)拆分,并且您&#39;在那里,你需要完成将每个令牌解析为int并将其粘贴在a中的步骤。

Integer.parseInt()会帮助您。