2017-02-28 15 views
1

Dies ist der Codekürzeste String-Länge zeigt in main-Methode, aber nicht, wenn sie in einem anderen Verfahren platziert

Package labone; 
import java.util.*; 

public class LabOne { 

static Scanner reader = new Scanner(System.in); 
static ArrayList<String> names = new ArrayList<>(); 


public static void main(String[] args) { 
    System.out.println("type\n 1: Exercise 1 'People's names'\n '"); 
    int choose = reader.nextInt(); 
    switch(choose) { 
     case 1 : 
      PeopleNames(); 
      break; 
     default: 
      System.out.println("invaild choice"); 
      break; 
    }   
} 

    public static void PeopleNames() {     
     //////// PEOPLES NAMES ////////  
    System.out.println("Enter names of people, if done enter 'done'"); 
    String Name = reader.nextLine(); 
    while(!"done".equals(Name)){ //if user type done exit from adding names 
     names.add(Name); // otherwise add names 
     Name = reader.nextLine(); //reads what user entered 
    } 
    //User typed 'done' and it displays the names in the arraylist 
    PrintArray(); // method 

    //Find Longest String 
    int largestString = names.get(0).length(); 
    int index = 0; 
    for (int i = 0; i<names.size(); i++){ 
     if(names.get(i).length() > largestString) { 
      largestString = names.get(i).length(); 
      index = i; 
     } 
    } 
    System.out.println(names.get(index) + " is the longest name and the length is " + largestString); 

    //Find Shortest String 
    int shortestString = names.get(0).length(); 
    int index1 = 0; 
    for (int i = 0; i<names.size(); i++){ 
     if(names.get(i).length() < shortestString) { 
      shortestString = names.get(i).length(); 
      index1 = i; 
     } 
    } 
    System.out.println(names.get(index1) + " is the shortest name and the length is " + shortestString); 

    //Find the Average of all the Strings 
    double num = names.size(); //number of elements in arraylist(size()) 
    double length =-1; 
    for(String str : names){ 
     length = length + str.length(); //sum of the lengths in the arraylist 
    } 
    length = length + names.size()-1; 
     num = length/num; //divide the sum with the size() 
     System.out.println("The average length of the names in the list: "+num); 
} 


//Method to view arrayList (names) 
public static void PrintArray() { 
    System.out.println("---------"); 
    for(String Name : names){ 
     System.out.println(Name); 
    } 

    } 
    } 

Ergebnis Lauf:
Typ 1: Übung 1 'Volkes Namen'
Geben Sie Namen von Personen ein, wenn Sie fertig sind
ashmeen
blom
erledigt

ashmeen ist der längste Name und die Länge beträgt 7
der kürzeste Name ist und die Länge ist 0 GEBEN ANTWORT NICHT
Die durchschnittliche Länge der Namen in der Liste: 4.0
BUILD ERFOLGREICH (Gesamtzeit: 12 Sekunden)

Wenn ich den Code in der Hauptmethode platzieren gibt es die Antwort der kürzesten Zeichenfolge und längsten Zeichenfolge, aber wenn der Code in PeopleNames-Methode platziert wird, zeigt es nur die längste Zeichenfolge aber es zeigt nicht die kürzeste Linie G.

+0

Können Sie beschreiben, welche Schritte Sie unternommen haben, um diesen Code selbst zu debuggen? "Es funktioniert in der Hauptmethode" kann ein bisschen vage sein. – andrel

+0

Ich habe das Ergebnis hinzugefügt. – Person23456

+0

Wenn ich den Code in der main-Methode platziere, gibt es die Antwort auf die kürzeste und längste Zeichenkette. Wenn der Code jedoch in der PeopleNames-Methode platziert wird, wird nur die längste Zeichenkette angezeigt, aber nicht die kürzeste Zeichenkette. – Person23456

Antwort

0

Bitte ändern reader.nextLine()-reader.next() als nextLine() Funktion ist das Hinzufügen eines leeren String auf die Arraylist als erstes Element. Der Code sieht wie folgt aus:

String Name = reader.next(); 
    while(!"done".equals(Name)){ //if user type done exit from adding names 
     names.add(Name); // otherwise add names 
     Name = reader.next(); //reads what user entered 
    } 

Grüße.

+0

Es hat funktioniert, Danke, du bist ein Genie! – Person23456

Verwandte Themen