2016-09-15 10 views
2

Ich bin ein Student, der gerade in Java anfängt; Ich habe mich mit scheinbar einfachen Konzepten arrangiert und hatte trotz vieler Googles Probleme, die Antwort darauf zu finden. Die Zuordnung fragt nach:Text zu einem gedruckten Array hinzufügen?

  • den Benutzer auffordern, die Anzahl der Menschen
  • erstellen String Array der angegebenen Größe
  • Prompt der Benutzer für den Namen jeder Person
  • jeden Namen Put einzugeben in die String-Array erstellt Ihnen
  • Verwenden Sie ein Java for-each jeden Namen mit der Länge des Namens

die Ausgabe etwas lik drucken aussehen sollte e:

  • "Person 1 Andrew genannt, und ihr Name ist 6 Zeichen lang"

Dies ist, was ich zur Zeit codiert.

System.out.print("Hello. Please enter the number of people: "); 

    int people = scan.nextInt(); 

    String[] myPeople = new String[people + 1]; 

    System.out.println("Enter the name of each person:"); 
    for(int i = 0; i < myPeople.length; i++)  

    {  
     myPeople[i] = scan.nextLine();     
    } 


    for(String peoples : myPeople) 
    { 
     System.out.println(peoples);   
    } 

Wie es jetzt steht, kann das Programm eine Eingabe vom Benutzer sammeln, sie in ein Array setzen, und dann das Array drucken zurück aus.

Komme ich das in die falsche Richtung? Ich kann mir nicht vorstellen, wie ich das letzte ändern würde, um nicht nur alle Namen auszudrucken, sondern jeden mit der "Person X ist benannt ...", ihrem Namen und dann der Beschreibung, wie viele Zeichen, auszudrucken lang ist ihr Name.

+1

drucken und verketten Zeichenfolgen mit dem '+' Operator 'System.out.println (" Name "+ Völker +" Länge: "+ Völker.length()); ' –

+1

Mögliches Duplikat von [Java String Verkettung mit + Operator] (http://stackoverflow.com/questions/15340207/java-string-concatenation-with-operator) –

Antwort

2

Sie sind gut. Im letzten for-Schleife können Sie nur so etwas wie:

int personNumber = 0; 
for(String people: myPeople) 
{ 
System.out.println(String.format("Person %d is named %s, and their name is %d characters long", personNumber + 1, people, people.length()); 
personNumber++; 
} 

Und eine Sache, die ich bemerkt habe - warum Sie Array Instanziierung mit new String[people + 1]? Warum diese zusätzliche Person? Array-Indizes werden mit 0 nummeriert, sodass new String[5] Ihnen ein Array von 5 Personen bietet.

+1

'new String [5]' gibt Ihnen nie ein Array mit 6 Elementen. Es wird Array mit Indizes '0, 1, 2, 3, 4 'haben also 5 Artikel insgesamt –

+0

@TG Edited und für Sie :) –

+0

Ich bin mir nicht sicher warum, aber wenn ich es nur mit String [] instanziieren myPeople = new String [Personen]; , es funktioniert nicht richtig. Der Benutzer gibt die Anzahl der Personen ein, wird gebeten, so viele Namen einzugeben ... Und stoppt die Schleife, nachdem sie eine weniger als die eingegebene Nummer eingegeben haben. Sieht so aus: https://i.gyazo.com/7b31abc94e6a0a5af3411b009619c029.png –

3

Lesen Sie über string concatenation.

int j = 1; 
    for(String peoples : myPeople) 
    { 
      System.out.println("Person " + j + " is named " + peoples + " and their name is " + peoples.length() + " characters long"); 
      j++; 
    } 

+ Operator zur Verkettung der Saiten verwendet.

+0

Ich denke, der Schlüssel Teil war Völker. Länge; Ich wusste nicht, wie ich auf die Länge der Elemente im Array zugreifen kann. Vielen Dank. –

0

Zunächst sollten Sie eine Reihe von Größe people, schaffen nicht people + 1:

String[] myPeople = new String[people]; 

Zur Ausgabe im gewünschten Format zu produzieren, müssen Sie den + Operator verwenden, um die Strings miteinander zu verbinden. Da auch die Position der Person in der Anordnung erforderlich ist, müssen Sie eine Variable erstellen zu speichern, dass:

int index = 1; 
for (String person: myPeople) { 
    String output = "Person " + index + " is named " + person + ", and their name is " + person.length() + " characters long."; 
    System.out.println(output); 
    index++; 
} 

Alternativ können Sie verwenden print statt println: (nur Code innerhalb for-Schleife zeigt)

System.out.print("Person "); 
System.out.print(index); 
System.out.print(" is named "); 
System.out.print(person); 
System.out.print(", and their name is "); 
System.out.print(person.length()); 
System.out.println(" characters long."); 
index++; 
Verwandte Themen