2016-11-26 8 views
-3
import java.util.*; 
public class RandomAddArray { 
    public static void main (String[] args) { 
     AddArray ad = new AddArray(); 
     int[] Ar = new int[4]; 
     ad.AddArray(Ar); 
    } 
} 

class AddArray { 
    public void AddArray(int a[]) { 
     for(int i = 0; i < a.length; i++) { 
      Scanner sc = new Scanner(System.in); 
      int n = sc.nextInt(); 
      a[i] = n + 2; 
      System.out.print(a[i]); 
     } 
    } 
} 

私のコードでは、コンソールから4つの整数を読み込み、それぞれに2を追加します。 数字1を4回入力するとSystem.out.print3を4回出力します。単純なループで配列を出力しているときとは異なる出力を返します。

はしかし、私は次のような出力が得られます。

Console output

+0

一部。あなたの番号をすべて読んだら、答えを書いてください。 – Henry

+0

@Henry System.out.printがfor-loopの外になければならないのですか?私はそれを試みましたが、そうであればプログラムは[i]または[n]を読むことができません。なぜfor-loopの内部に書きましたか。あなたはそれを修正するための素晴らしいアイデアやアドバイスをお持ちですか? – javaprogrammer

+0

2番目の 'for'ループを考えましたか? – Henry

答えて

0

、あなたの入力を取得した後System.out.print(value);を呼び出す場合、値は、あなたの入力した後に直接印刷されます(最後の文字が改行文字で、それゆえで次の行)。ただ、このような最初のループの後に別のループにそれを置く:

public void AddArray(int a[]) { 

    Scanner sc = new Scanner(System.in); 

    for(int i = 0; i < a.length; i++) { 
     int n = sc.nextInt(); 
     a[i] = n + 2; 
    } 

    for (int value : a) { 
     System.out.print(value); 
    } 

} 

その後、それはあなたの入力した後、別の行に3333を印刷します。それぞれの番号を別の行に印刷する場合は、代わりにSystem.out.println(value);を使用してください。

+0

ありがとう!それは完全に動作します!しかし、私はあなたに一つの質問があります。意味:for(int value:a)の意味ですか? – javaprogrammer

+0

@javaprogrammer各ループのためのものであり、配列 'a'のすべての値を意味します。 'int value'は' a'の各値に対して変化します。 – Kyon

+0

@Kyonありがとうございました! – javaprogrammer

0

ここに私の現在の解決策があります。うまくいけば、解説はあなたを少し助けます、そうでなければ私にいくつかのさらなる質問を依頼してください。キョン

import java.util.*; 

public class Main { 

    public static void main (String[] args) { 
     // create Array to fill and pass it into our fill function 
     int[] Ar = new int[4]; 
     AddArray.addToArray(Ar); 
     System.out.println(Arrays.toString(Ar)); 
    } 

    private static class AddArray { 

     // static class, there is no need to instantiate it. 
     public static void addToArray(int a[]) { 

      // create on scanner out of the loop 
      Scanner sc = new Scanner(System.in); 

      // for each array index let's scan for some new int's 
      for(int i = 0; i < a.length; i++) { 
       System.out.printf("Type in your %s of %s integer:%n", i+1, a.length); 
       int n = sc.nextInt(); 
       a[i] = n + 2; 
      } 

      // close scanner afterwards 
      sc.close(); 
     } 

    } 

} 

:)

挨拶は、出力は次のようになります。あなたが入力されて見るものの

Type in your 1 of 4 integer: 
4 
Type in your 2 of 4 integer: 
124 
Type in your 3 of 4 integer: 
12 
Type in your 4 of 4 integer: 
2 
[6, 126, 14, 4] 

Process finished with exit code 0 
+0

あなたの出力は本当に素晴らしいようです..あなたの偉大なアドバイスありがとう! – javaprogrammer

+0

@Kyon 'System'ストリームで' Scanner'を閉じるべきではありません。どうして?それは**それを**作成したJVMの責任であるからです。 – thatguy

+0

@thatguy私はストリームを閉じます。なぜなら、ストリームが閉じている必要がないからです。 Java docスキャナを参照すると、そこにも閉じられています。 https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html – Kyon

関連する問題