2016-10-07 2 views
0

Ich habe diese Frage darüber, wie Sie eine Methode schreiben, um ein Array mit ganzen Zahlen zu füllen. Ich habe diese Methode gemacht, aber ich war verwirrt, wie ich es drucken sollte. Sollte ich bei jeder Methode mit for-Schleife anfangen? Und wie soll ich sie in einer Zeile mit einem Leerzeichen zwischen jeder Zahl drucken: [1 2 3 4 5 6 7 ... 50]?Methode, um die Arrays mit Folge von ganzen Zahlen zu füllen und zu drucken

public class Numbers { 
    public int[] numbers; 

    public Numbers() { 
     numbers = new int[50]; 
    } 

    public void numSequence() { // filling the array with sequence of integers. 
     for(int i = 0; i < 50; i++) { 
      numbers[i] = i; 
     } 
    } 

    public void printArray() { // printing the array 
     // do I need for loop here 
     for(int i = 0; i < 50; i++) { 
      System.out.print(i+1); 
     } 
    } 

    public static void main(String[] args){ 
     Numbers d = new Numbers(); 

     d.numSequence(); 
     d.printArray(); 
    } 
} 
+1

Ist Null mehr als 50? –

+1

Sie drucken nicht das Array, Sie drucken nur die Iterationsnummer plus eins in einer for-Schleife ... Auch wenn denken Sie, 0 ist größer als 50? – Li357

+0

Aus durch einen Fehler sind die zwei häufigsten Fehler in der Programmierung. – LinuxDisciple

Antwort

0

Nicht notwendig, um eine Klasse zu erstellen, um diese Art von Sachen zu tun. Das Codebeispiel in Java 8 ist so etwas wie:

Stream<Integer> stream = Stream.iterate(1, t-> t + 1); 
System.out.println(Arrays.toString(stream.limit(50).toArray())); 

Wenn Sie die Methode print zur Verwendung darauf bestehen, nehmen Sie bitte einen Blick auf die Implementierung von Arrays # toString. Grundsätzlich müssen Sie StringBuilder verwenden, um die Array-Elemente zu verketten.

1

Ihre printArray Methode druckt das Array nicht. Es druckt die Indizes der for-Schleife. Drucken Sie also zuerst die Array-Werte.

Auch mit diesem Druck können Sie Ihre eigenen Räume nach jedem Buchstaben hinzufügen.

z.

public void printArray() { // printing the array 
    System.out.print("["); // not in loop 
    for(int i = 0; i < numbers.length; i++) { // loop through numbers array 
     System.out.print(numbers[i]); // print the element in the array 
     if (i != numbers.length - 1) { // not the last element, so print a space 
      System.out.print(" "); 
     } 
    } 
    System.out.print("]"); // not in loop 
} 

Aber dann werden Sie auf ein Problem stoßen. Wenn Sie Ihr Array numbers erstellt haben, haben Sie unter 0, nicht 1 gestartet. Jetzt können Sie das beheben, indem Sie 1 zu dem Array numbers hinzufügen, wie Sie in Ihrer Frage getan haben. Aber das ist eine schlechte Übung, da Sie Ihr Array erst richtig erstellt haben könnten. So Ihre numSequence Methode dies ändern:

public void numSequence() { // filling the array with sequence of integers. 
    for(int i = 1; i <= 50; i++) { // starts at 1, and <= 50 so it adds 50 too 
     numbers[i] = i; 
    } 
} 
0

Ich bin nicht in Detail zu gehen, werde ich nur den Code flicken,

public class Numbers { 
public int[] numbers; 

public Numbers() { 
    numbers = new int[50]; 
} 

public void numSequence() { // filling the array with sequence of integers. 
    for(int i = 0; i < 50; i++) { 
     //Add i+1 here o when we print we get 1 2 3 ....50 
     numbers[i] = i+1; 
    } 
} 

public void printArray() { // printing the array 
    // Use numbers.length instead of 50. 
    for(int i = 0; i < numbers.length; i++) { 
     //Print the values inside the array numbers 
     System.out.print(numbers[i]+" "); 
    } 
} 

public static void main(String[] args){ 
    Numbers d = new Numbers(); 

    d.numSequence(); 
    d.printArray(); 
} 

}

Tipp: Sie können das machen Programmieren Sie besser skalierbar, indem Sie diese Methode anstelle von Ihnen verwenden, und greifen Sie darauf als d.numSequence (100) zu. Dies wird gedruckt 1 2 3 ... 100

public void numSequence(int theNumberLimit) { 
    for(int i = 0; i < theNumberLimit; i++) { 
     numbers[i] = i+1; 
    } 
} 
01 2 ... 100

Danke hoffentlich hilft

Verwandte Themen