查找字符串数组中最长的字符串
这个问题是我试图这样做,但我检查字符串长度的方法不起作用; 我该怎么办才能修好它?
public static void main(String[] args) { String[] animalNames = {"cat", "rabbit", "horse", "goat", "rooster", "ooooooooooooooo"}; String a= getLongestString(animalNames); System.out.println(a); } public static String getLongestString(String []animalNames) { // String animalNames[] = {"cat","chicken","horse","ooooooooo" }; int j = 0; for (j = 0; j animalNames[j + 1].length()) { return (animalNames[j]); } } return null; } }
这里。 1.你使用j<= animalNames.length;
?
-
你比较
animalNames[j + 1]
? - >错误索引超出数组 -
并且你在第一个if条件
return (animalNames[j]);
- >错误的价值
好的,让我说清楚。 您可以在数组中找到最长的字符串。 循环遍历数组,然后比较2个近元素,然后返回更大的元素。 使用您的代码,它将返回兔子。 对?
可能是您对流程流程感到困惑。 有一个简单的方法。
- 为第一个数组元素的长度分配一个变量:elementLength = array [0] .length; 和一个跟踪索引的值
- 循环遍历数组使用此变量检查每个元素,如果更大,则重新分配元素值并更新索引。
- 循环结束。 你有最大的长度和指数
码:
int index = 0; int elementLength = array[0].length(); for(int i=1; i< array.length(); i++) { if(array[i].length() > elementLength) { index = i; elementLength = array[i].length(); } } return array[index];
这就对了。
public class LongestWord { public static void main(String []args) { System.out.println("Please enter the string for finding longest word"); Scanner sc1 = new Scanner(System.in); String str = sc1.nextLine(), x=null; String str2[] = str.split(" "); x=str2[0]; int i =0,j = 0; for( i = 0; i < str2.length; i = j) { for( j =i+1; j < str2.length; j++) { if(x.length() < str2[j].length()) { x = str2[j]; break; } } } System.out.println("the longest string is: " + x + " and it's length is: " + x.length()); } }
我认为不应该有array.length();
否则你将得到ArrayIndexOutOfBoundException
因为我们不能使用length()作为字符串数组,而是我们可以使用特定的字符串长度。
public class Main { public static void main(String[] args) { String [] names = {"Greg", "Aleksandra", "Martha", "Oliwka"}; String wynik = findLongestName(names); System.out.println( wynik); } public static String findLongestName(String [] names){ int size = names.length; String longestName = names[0]; for(int i = 0; i <= 3; i++){ if(names[i].length() > longestName.length()){ longestName = names[i]; }} return longestName; } }