Java 接受5个名称并打印最长的名称?

Java 接受5个名称并打印最长的名称?,java,compareto,string-length,Java,Compareto,String Length,我想为5个给定的名字取最长的名字。我想我应该使用compareTo()方法还是length() 输出必须如下所示: enter 5 names : Joey Mark Catherine Zachery Foster Longest name is Catherine. 我应该使用什么方法以及如何使用?这是我目前的代码: Scanner x = new Scanner(System.in); String name = "" System.out.print("Enter 5 names")

我想为5个给定的名字取最长的名字。我想我应该使用
compareTo()
方法还是
length()

输出必须如下所示:

enter 5 names :
Joey
Mark
Catherine
Zachery
Foster

Longest name is Catherine.
我应该使用什么方法以及如何使用?这是我目前的代码:

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?

.compareTo
告诉您哪个字符串按字典顺序排在第一位(如果s1>s2,则为0)

在您的情况下,您需要基于长度进行比较,因此您需要后者。如果只有5个名字,你可以取第一个并假设它是最长的,然后通过保存“迄今为止最长的”并在它们出现时进行比较,逐一阅读其他名字。毕竟,你只在乎最长的

如果您希望按长度对它们进行排序,同时仍然保留它们,则需要将它们存储在某种集合(列表、数组)中,然后根据长度进行排序


这个问题很简单,所以我不会直接提供代码,试着自己摸索,你可以做到:)

这里有一个解决方案,可以处理任意数量的条目:

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);
您需要按住Ctrl键来结束Windows上的输入流,这是怎么回事

Scanner in = new Scanner(System.in);
// no need to have 5 all over the code.
// Define it once to avoid "magic nubmers"
int namesCount = 5;
// fun fact: shortest name is always "". We don't have to use null
String longestName = "";
System.out.print("Enter " + nameCount + " names:");
for (int i=0; i< nameCount; i++){
    // store new name from user
    String candidate = in.readLine();
    // is this one longer than the current longest?
    if (longestName.length() < candidate.length()){
        // found a longer name
        longestName = candidate;
    }
}
System.out.println("Longest name is " + longestName); 
Scanner-in=新的扫描仪(System.in);
//不需要在整个代码上都有5个。
//定义一次,以避免“神奇的数字”
int namesCount=5;
//有趣的事实:最短的名字总是“”。我们不必使用null
字符串longestName=“”;
系统输出打印(“输入”+名称计数+”名称:);
对于(int i=0;i

这样就不用存储名称了,因为似乎您只使用最长的名称。它还概括了要迭代的名称的数量,最重要的是变量名称是有意义的名称。

一个简单的方法是使用
for
循环读取5个名称并找到最大名称的长度。使用
for
循环可避免创建5个字符串变量

如果以后要使用这些名称,可以选择
String
array

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
}
publicstaticvoidmain(字符串[]args)引发IOException{
扫描器x=新扫描器(System.in);
字符串名称=”;
字符串maxName=“”;
int maxLength=0;
System.out.println(“输入5个名称:”);
对于(inti=0;i<5;i++){//读取5个名称
name=x.nextLine();
如果(maxLength
输出:

输入5个名称:
raj
sita
吉塔
慕克吉
丽塔
最长的名字是慕克吉


以下是一个可行的解决方案:

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);
      }

}

这是我的代码,用于比较3个输入字符串的长度:

public static void main(String[] args) {

    String string1 , string2 , string3;

    Scanner input = new Scanner(System.in);
    System.out.println("Enter three string names to compare");
    string1 = input.nextLine();
    string2 = input.nextLine();
    string3 = input.nextLine();

    if (string1.length()>string2.length()) {
        if (string1.length() > string3.length())
            System.out.println("String 1 has the longest length , length = "+string1.length());
    }

    if (string2.length()>string1.length()){
        if(string2.length()>string3.length())
            System.out.println("String 2 has the longest length , length = "+string2.length());
    }

    if (string3.length()>string1.length()) {
        if (string3.length() > string2.length())
            System.out.println("String 3 has the longest length , length = " + string3.length());
    }

}
//简单JAVA解决方案
GFG类
{
字符串最长(字符串名称[],int n)
{
字符串res=“”;

对于(int i=0;i您应该使用
String#length()
for loop
:)@lostMind和数据结构(数组,列表…)@ReutSharabani-可能是,但不是必需的。您可以找到当前和姓氏中的较大者:)
longest=Collections.max(Arrays.asList(name,name2…),Comparator.comparating(String::length))
。关键是将它们存储在
name
name1
namen
中不是一种很好的存储方式。这不是一种很好的存储数据的方式。如果你完全放弃存储它们,那么不需要存储最长的名称。它不能与任何数字一起工作,因为它甚至不会编译。你是如何尝试的你的代码?现在可以编译了。但是你也应该添加关于关闭输入流的信息。因为OP看起来很新,她可能不知道。
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);
    }
}
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);
      }

}
public static void main(String[] args) {

    String string1 , string2 , string3;

    Scanner input = new Scanner(System.in);
    System.out.println("Enter three string names to compare");
    string1 = input.nextLine();
    string2 = input.nextLine();
    string3 = input.nextLine();

    if (string1.length()>string2.length()) {
        if (string1.length() > string3.length())
            System.out.println("String 1 has the longest length , length = "+string1.length());
    }

    if (string2.length()>string1.length()){
        if(string2.length()>string3.length())
            System.out.println("String 2 has the longest length , length = "+string2.length());
    }

    if (string3.length()>string1.length()) {
        if (string3.length() > string2.length())
            System.out.println("String 3 has the longest length , length = " + string3.length());
    }

}
//SIMPLE JAVA SOLUTION
class GFG 
{
    String longest(String names[], int n)
 {
        String res="";
        for(int i=0;i<n;i++)
        {
            if(res.length()<names[i].length())
            {
                res=names[i];
            }
        }
        return res;
        
    }
}