2017-10-06 2 views
-1

テキストファイルから3行の行を読み込み、昇順に並べ替えるプログラムを取得しようとしています、それ以上読むことができなくなり、そしてプログラムを停止するまで。それから、何行目のコードが読み込まれたのか教えてください。しかし、プログラムを実行しようとするたびに、最初の行の番号から無限に情報を出力し続けるだけで、他の行には移動しません。ここに私のコードファイルからの最初の入力行が無限ループで読み込まれ、次の行に移動する方法がわからない

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

public class Project4 { 
public static void main (String[] args) 
throws FileNotFoundException 
{ 
    Scanner name= new Scanner (System.in); 

    System.out.println("Project #4"); 

    name = new Scanner(new File("data4.txt")); 

    int a = name.nextInt(); 
    int b = name.nextInt(); 
    int c = name.nextInt(); 

    do { 
    System.out.println("Original order of integers: "+a+" "+b+" "+c); 

    if (a>=b && a>c) { 
     if (b>c){ 
     System.out.println("The sorted integers are: " +c+" "+b+" "+a);} 
     else{ 
     System.out.println("The sorted integers are: "+b+" "+c+" "+a);} 
    } 
    else if (b>=a && b>c){ 
     if (a<c){ 
     System.out.println("The sorted integers are: "+a+" "+c+" "+b);} 
     else{ 
     System.out.println("The sorted integers are: "+c+" "+a+" "+b);} 
    } 
    else { 
     if (b<a){ 
     System.out.println("The sorted integers are: "+b+" "+a+" "+c);} 
     else{ 
     System.out.println("The sorted integers are: "+a+" "+b+" "+c);} 
    } 
}while(name.hasNext()); 
} 
} 

だ私はそれは私にそれが停止する前に起こったすべてのループを伝える部分を追加していないが、私はどちらかそれを行う方法がわかりません。なぜ誰もが最初の行を何度も何度も何度も読んでいるだけなのか分かっていますか?

+1

ようこそ!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、より具体的な質問に戻ってください。 –

+0

@ CoolGuy76 - あなたのプログラムを実行しました。入力ファイル:12345 23333と出力が表示されたと思いますか?プロジェクト#4 元の整数の順序:12345 33555 23333 ソートされた整数は次のとおりです。12345 23333 33555 – notyou

+0

したがって、私はdata4.txtに何か問題があると思います – notyou

答えて

0

この回答は1 google awayだった。ちょうどファイルからの入力を読む。あなたのプログラムが実際にすべてのファイルをソートされていない、あなただけの「並べ替え」を表示している

ブックのソリューション:スタックオーバーフローへ

public class Exercise03_08 { 
    public static void main(String[] args) { 
    java.util.Scanner input = new java.util.Scanner(System.in); 

    // Enter three numbers 
    System.out.print("Enter three integers: "); 
    int number1 = input.nextInt(); 
    int number2 = input.nextInt(); 
    int number3 = input.nextInt(); 

    if (number1 > number2) { 
     int temp = number1; 
     number1 = number2; 
     number2 = temp; 
    } 

    if (number2 > number3) { 
     int temp = number2; 
     number2 = number3; 
     number3 = temp; 
    } 

    if (number1 > number2) { 
     int temp = number1; 
     number1 = number2; 
     number2 = temp; 
    } 

    System.out.println("The sorted numbers are " 
     + number1 + " " + number2 + " " + number3); 
    } 
} 
関連する問題