2015-09-23 1 views
0

Je veux le nom le plus long pour 5 prénoms. Je pense que je devrais utiliser la méthode compareTo() ou length()?Acceptez 5 noms et imprimez le nom le plus long?

sortie doit être comme ceci:

enter 5 names : 
Joey 
Mark 
Catherine 
Zachery 
Foster 

Longest name is Catherine. 

Quelle méthode dois-je utiliser et comment? Ceci est mon code à ce jour:

Scanner x = new Scanner(System.in); 
String name = "" 
System.out.print("Enter 5 names"); 
name = x.nextLine(); 
name2 = x.nextLine(); 
name3 = x.nextLine(); 
name4 = x.nextLine(); 
name5 = x.nextLine(); 

if(name.compareTo(name2)>0) //is this method right? 
+0

Vous devez utiliser 'longueur de la chaîne de #()' et 'pour loop' :) – TheLostMind

+1

@TheLostMind et une structure de données (tableau, liste ...) –

+1

@ReutSharabani - * probablement oui * mais ce n'est pas * obligatoire *. Vous pouvez trouver le plus grand de l'actuel et le nom :) – TheLostMind

Répondre

2

.compareTo vous indique quelle chaîne vient en premier dans l'ordre lexicographique (< 0 si s1 < s2, 0 si s1 == s2,> 0 si s1> s2)

String s1 = "abc"; 
String s2 = "def"; 
s1.compareTo(s2) < 0; 

.length() retourne la longueur d'une chaîne

s1.length()==3; 

Dans votre cas, vous devez comparer en fonction de la longueur, vous devez donc celle-ci. Si ce n'est que 5 noms, vous pouvez prendre le premier et supposer que c'est le plus long, puis lire les autres un par un en gardant le "plus long jusqu'ici" enregistré et en les comparant comme ils viennent. Après tout, vous vous souciez seulement du plus long. Si vous vouliez qu'ils soient triés par longueur, tout en les conservant tous, vous devez les stocker dans une sorte de collection (liste, tableau), puis trier en fonction de la longueur.

Le problème est assez facile, donc je ne fournira pas directement le code, essayez de vous assimilez, vous pouvez le faire :)

0

est ici une solution qui devrait fonctionner avec un nombre d'entrées:

Scanner x = new Scanner(System.in); 
String name = "", temp=""; 

while (x.hasNextLine()){ 
    temp = x.nextLine(); 
    if (temp.length() > name.length()) name = temp; 
} 

System.out.println("Longest is " + name); 

Vous devez Ctrl + Z pour mettre fin à la fluxEntrée sous Windows

+0

Il ne peut pas fonctionner avec n'importe quel nombre, car il ne sera même pas compiler? Comment avez-vous essayé votre code? – Tom

+0

@Tom ici c'est –

+1

Maintenant, il compile. Mais vous devez également ajouter les informations sur la fermeture du flux d'entrée. Puisque OP semble être très nouveau, elle pourrait ne pas le savoir. – Tom

0

Qu'en est-ce? Cela renonce à stocker les noms, car il semble que vous n'utilisiez que le plus long de toute façon. Il généralise également le nombre de noms à itérer, et le plus important, les noms de variables sont des noms significatifs.

0

Un moyen facile serait une boucle for pour lire 5 noms et trouver la longueur pour le plus grand nom. L'utilisation de la boucle for évite la création de 5 variables chaîne dissuasives.

Si vous souhaitez utiliser ces noms plus tard, vous pouvez opter pour la baie String.

public static void main(String[] args) throws IOException { 
    Scanner x = new Scanner(System.in); 
    String name = ""; 
    String maxName = ""; 
    int maxLength = 0; 

    System.out.println("enter 5 name :"); 

    for (int i = 0; i < 5; i++) { // read 5 names 
     name = x.nextLine(); 
     if (maxLength < name.length()) { // check longest name 
      maxLength = name.length(); 
      maxName = name;    // store in temp variable to show 
     } 
    } 
    System.out.println("Longest name is " + maxName); // print largest name 
} 

sortie:

enter 5 Nom:

raj sita

gita mukherjee

rita nom le plus long est mukherjee

0
import java.util.Scanner; 

public class LenghtyName { 

    public static void main(String[] args) { 

     Scanner x = new Scanner(System.in); 
     /* 
     Instead of declaring 5 different String variable 
     just use String array with size = 5 
     */ 
     String[] names = new String[5]; 

     System.out.print("Enter 5 names :"); 

     names[0] = x.nextLine(); 
     names[1] = x.nextLine(); 
     names[2] = x.nextLine(); 
     names[4] = x.nextLine(); 
     names[5] = x.nextLine(); 

     //Assume lenthyName as empty String 
     String lengthyName = ""; 

     /* 
     Iterate over String array using for-each loop 
     */ 
     for (String name : names) { 
      /* 
      -Check null to avoid NullPointerException 
      -Trim the left and right blank space in name by #trim() 
      -Compare current name length with lengthyName if greater 
      replace the lengthyName by current name. 
      */ 
      if (name != null && name.trim().length() > lengthyName.length()) { 
       lengthyName = name; 
      } 
     } 

     /* 
     Print length name 
     */ 
     System.out.println("Longest name is " + lengthyName); 
    } 
} 
0

est ici une solution qui devrait fonctionner:

public class LongestWord { 

    public static String getLongestString(String[] array) { 
      int maxLength = 0; 
      String longestString = null; 
      for (String s : array) { 
       if (s.length() > maxLength) { 
        maxLength = s.length(); 
        longestString = s; 
       } 
      } 
      return longestString; 
     } 

     public static void main(String[] args) { 
      String[] toppings = {"Cheeddddddddddse", "Pepperoni", "Black Olivesddd"}; 
      String longestString = getLongestString(toppings); 
      System.out.format("longest string: '%s'\n", longestString); 
     } 

}