2016-09-16 3 views
0

私はしばらくの間、StackOverflowをチェックしていました。私はサイト上で私の質問を見つけることができなかったので、私はそれを自分で尋ねると思った。私は下に自分のコードをコピーしました。 私は学校の割り当てのためにこれをやっています。それは、それが仮定されているすべてのことを行う(2番目に小さい番号を見つける)が、出力は私がそれが欲しいものではありません。私はout.printfステートメントを別の場所に置こうとしましたが、うまくいきません。最初に起こるのは、最初の2つの数字が自動的にsmallestNumberとsecondSmallestNumberに割り当てられるということです。割り当てでは、入力される最初の数字は常に2番目の数字より小さくなければなりません。その後、ループに戻り、すべての数値を比較します。最後に、最後のsecondSmallestNumberを出力します。しかし、それはすべてを印刷します。私はいくつかのことを試みましたが、私はこの権利を得ることができません。私を助けてください?はループからの最終的な反復のみを表示します

EDIT : teaching assistant told me I can't submit my assignments online in the event of fraud. So I'm sorry have to delete this code. 
+0

'secondSmallestNumber'は、あなたが外でそれの価値を印刷できることを意味し、ループ内でのみ存在する制限されていないことを意味' while'ループの外で定義された(すなわち後ループ)を使用すると、期待した結果が得られます。それはループに含まれないため、1回だけ印刷されます。 – px06

+0

私は3つの同じ答えを得ていますが、あなたが話していることはすべて理解していますが、うまくいきません。さらに手伝ってもらえますか? – PilotoLoco

答えて

1

他の人に言われているように、印刷をループ外に移動する必要があります。また、最後にflushprintstreamを叫ぶ。だから、これを試してみてください。

package module2; 

    import java.io.PrintStream; 
    import java.util.Scanner; 

    public class SecondSmallest { 

     PrintStream out; 

     SecondSmallest() { 
      out = new PrintStream(System.out); 
     } 

     void start() { 
      Scanner in = new Scanner(System.in); 
      out.printf("%s", "Enter multiple numbers divided by a space and close with Enter: "); 
      int newNumber; 
      int smallestNumber = in.nextInt(); 
      int secondSmallestNumber = in.nextInt(); 

      while (in.hasNext()) { 
       newNumber = in.nextInt(); 

       if (newNumber < smallestNumber) { 
        secondSmallestNumber = smallestNumber; 
        smallestNumber = newNumber; 

       } 
      } 
     //moved here to print only once 
      out.printf("%s%d\n", "The second smallest number is : ", secondSmallestNumber); 
     //flush output stream 
      out.flush(); 
     } 


     public static void main(String[] argv) { 
      new SecondSmallest().start(); 
     } 
+0

ありがとう!私はフラッシュが何を見つけるでしょう。しかし、それは働いた – PilotoLoco

2

何かを繰り返すには、ループの中に入れます。したがって、にはを繰り返し、ループのの外側にはを入れてください。

+0

あなたはどこに正確に私を見せてくれますか?私はほぼすべての行に入れようとしました。ほとんどの場合、コンソールはループの外部に何のフィードバックも与えませんでした。 – PilotoLoco

1

out.printf("%s%d\n", "The second smallest number is : ", secondSmallestNumber);をwhileループの外側に移動します。

+0

これはコンソールに何も表示されないという問題です。 – PilotoLoco

関連する問題