Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回数组中最长字符串的元素号_Java_Arrays_String - Fatal编程技术网

Java 返回数组中最长字符串的元素号

Java 返回数组中最长字符串的元素号,java,arrays,string,Java,Arrays,String,我正在尝试获取最长的方法来获取用户输入的字符串数组,然后返回该数组中最长字符串的元素号。我已经能够返回最长字符串中的字符数了,但我不相信这能满足我的需要。我的问题是,当我试图解决这个问题时,总是会出现不兼容的类型错误。我还不了解字符串的整个数据类型。我很困惑如何返回数组中的数字,而数组是由字符串组成的。主要方法很好,我被卡在了????部分 public static void main(String [] args) { Scanner inp = new Scanner( Syste

我正在尝试获取最长的方法来获取用户输入的字符串数组,然后返回该数组中最长字符串的元素号。我已经能够返回最长字符串中的字符数了,但我不相信这能满足我的需要。我的问题是,当我试图解决这个问题时,总是会出现不兼容的类型错误。我还不了解字符串的整个数据类型。我很困惑如何返回数组中的数字,而数组是由字符串组成的。主要方法很好,我被卡在了????部分

public static void main(String [] args) 
{
    Scanner inp = new Scanner( System.in );
    String [] responseArr= new String[4];

    for (int i=0; i<4; i++)
    {
     System.out.println("Enter string "+(i+1));
     responseArr[i] = inp.nextLine();
    }
    int highest=longestS(responseArr);
}

public static int longestS(String[] values)
{    
    int largest=0

    for( int i = 1; i < values.length; i++ )
    {
        if ( ?????          )

    }
    return largest; 
}
publicstaticvoidmain(字符串[]args)
{
扫描仪inp=新扫描仪(System.in);
String[]responseArr=新字符串[4];
for(int i=0;i
for(int i=0;i最大值)
{
最大=值[i]。长度();
指数=i;
}
}
收益指数;
注意:用0初始化int
i
——数组索引是基于0的


回到
main
,然后可以执行
System.out.println(“最长:“+responseArr[highest]”)
等。

您需要在
longestS
方法中存储两个东西:目前为止的最大长度和最大长度的数组索引。还要记住,在Java中数组索引从0开始。使用
int i=1
初始化的for循环实际上将从第二个索引开始。

我将如何编写它:

public static int findIndexOfLongestString(String[] values)
{     
   int index = -1;

   if ((values != null) && (values.length > 0))
   {
       index = 0;
       String longest = values[0];
       for (int i = 1; i < values.length; ++i)
       {
          if (values[i].length() > longest.length())
          {
             longest = values[i];
             index = i;
          }
       }
   }

   return index;
}
public static int findIndexOfLongsString(字符串[]值)
{     
int指数=-1;
如果((values!=null)&&(values.length>0))
{
指数=0;
字符串最长=值[0];
对于(int i=1;i最长.length())
{
最长=值[i];
指数=i;
}
}
}
收益指数;
}
我的解决方案:

public class JavaApplication3
{
    public static void main(String[] args)
    {
        String[] big={"one","two","three"};
        String bigstring=null;
        int maxlength=0;
        for(String max:big)
        {
            if(maxlength<max.length())
            {
                maxlength=max.length();
                bigstring=max;
            }
        }
        System.out.println(bigstring);
    }
}
公共类JavaApplication3
{
公共静态void main(字符串[]args)
{
字符串[]大={“一”、“二”、“三”};
字符串bigstring=null;
int maxlength=0;
用于(字符串最大值:大)
{

如果(maxlengthWelcome出现堆栈溢出!请编辑您的代码以改进格式(制表符等)-这将增加您获得的(好)答案的数量。当我还是大学生时,“编程顾问”会拒绝提供任何帮助,除非代码格式正确。IMO,“我是这个网站的新手”也不是有效的借口。如果字符串数组是{“this”,“list”,“same”,“size”,“four”},该怎么办?您的方法应该返回什么索引?这不会返回数组中的索引。
public class JavaApplication3
{
    public static void main(String[] args)
    {
        String[] big={"one","two","three"};
        String bigstring=null;
        int maxlength=0;
        for(String max:big)
        {
            if(maxlength<max.length())
            {
                maxlength=max.length();
                bigstring=max;
            }
        }
        System.out.println(bigstring);
    }
}