[英]Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
[英]Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException:
因此,我的工作是編寫一個遞歸Java方法,該方法無需使用任何循環即可查找整數數組的最大值。 輸入是第一行,其中包含一個整數n <10。下一行包含n個由空格分隔的數字。 輸出應為單個整數。 調用您的程序FindMax。 到目前為止,下面的代碼是我可以編譯的,但是我無法輸入
input line 1: 5 (n) }
這是我需要能夠輸入的
input line2: 2 3 4 5 3 }
它讓我進入
input: 5 (n)
input: 2
input: 3
input: 4
input: 5
input: 3
同樣在輸入以上內容后,我得到:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at FindMaxtesting.getmax(FindMaxtesting.java:35)
at FindMaxtesting.getmax(FindMaxtesting.java:48)
at FindMaxtesting.getmax(FindMaxtesting.java:42)
at FindMaxtesting.getmax(FindMaxtesting.java:42)
at FindMaxtesting.getmax(FindMaxtesting.java:42)
at FindMaxtesting.getmax(FindMaxtesting.java:42)
at FindMaxtesting.main(FindMaxtesting.java:17)
到目前為止,這是我的代碼:
import java.util.Scanner;
public class FindMaxtesting
{
public static void main (String[]args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int i = 0;
int fin = 0;
System.out.println(getmax( Inca(n ) , n , fin , i));
}
public static int[] Inca(int n )
{
Scanner sc = new Scanner(System.in);
int[] arr = new int[n];
for(int j=0;j<n;++j)
{
arr[j] = sc.nextInt();
}
return arr;
}
public static int getmax ( int arr[], int n, int fin, int i )
{
int temp = 0;
if (fin < arr[i])
{
temp = fin;
fin = arr[i];
arr[i] = temp;
i++;
getmax(arr , n , fin , i);
}
else if (fin > arr[i])
{
i++;
getmax(arr , n , fin , i);
}
else if ( i == n-1 )
{
return fin;
}
return fin;
}
}
問題的實質是在getmax中,您需要添加以下行
if (i >= n)
return fin;
您正在遞歸地搜索數組,但這並不是最好的方法,但是我認為這是一個作業問題,您需要說什么時候停止在數組中進一步查找,但是您仍在繼續查找在數組中。 當i> = n時,您知道已經搜索了整個數組,並且可以返回fin,因為沒有其他值可以更大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.