我有一个用Java实现的伪代码,但是我做错了,这是我的任务和迄今为止所做的:
Algoritm
ArrayMax(arr)
输入:大小为n> 0的1-D数值阵列Arr。
让CurrentMax = Arr ^ 0
对于i = 1到n-1
如果Arr ^ i> CurrentMax然后CurrentMax = Arr ^ i
- 醇>
结束
输出:CurrentMax,Arr中的最大值
我们将实施和测试算法
ArrayMax(arr)
。以下代码段可用作您工作的基础
public static void main(String args[]){ double arr[]= {1,-6.3,9000,1.1,0.0,-456,6,23,-451.88}; System.out.println(ArrayMax(arr)); } public static double ArrayMax(double arr[]){ double CurrentMax = arr[0]; // Complete the algorithm here... return(CurrentMax); }
在许多不同的输入数据集上测试您的工作。
最后创建一个与
一起使用的程序的新版本ArrayList
这就是我所做的:
import java.util.Scanner;
public class CS1702_65 {
public static double ArrayMax(double arr[]){
double CurrentMax = arr[0];
for(i = 1;i<n-1;i++)
{
if (arr[i] > CurrentMax){
CurrentMax = arr[i];
}
}
return(CurrentMax);
}
public static void main(String args[]){
//Scanner input = new Scanner(System.in);
// System.out.print("Enter a 1D numerical array Arr of size n>0: ");
// int x = input.nextInt();
double arr[]= {1,-6.3,9000,1.1,0.0,-456,6,23,-451.88};
System.out.println(ArrayMax(arr));
}
}
答案 0 :(得分:1)
您的ArrayMax实现不好,您忘记了初始变量&#34; i&#34;和&#34; n&#34;。 在这里你有正确的功能:
public static double ArrayMax(double arr[]){
double CurrentMax = arr[0];
int n = arr.length;
for(int i = 1;i<n;i++){
if (arr[i] > CurrentMax){
CurrentMax = arr[i];
}
}
return CurrentMax;
}
答案 1 :(得分:0)
public static <T extends Comparable<T>> T maxOfArray(T[] arr){
if (arr != null && arr.length > 0) {
T max = arr[0];
for (int index = 1; index < arr.length; index++) {
if (max.compareTo(arr[index]) < 0) {
max = arr[index];
}
}
return max;
}
return null;
}
public static void main(String[] args) {
final Double maxOfArray = maxOfArray(new Double[]{1D, 1.1, 3D});
System.out.println("maxOfArray = " + maxOfArray);
}