我已经编写了这段代码,以便对字符,整数和双精度数组进行一些计算。
static char minimum(char array[])
{
char min = 'z';
int n = array.length;
for (int i = 0; i < n-1; i++)
{
if (array[i] < min)
{
min = array[i];
}
}
return min;
}
static int minimum(int array[])
{
Arrays.sort(array);
return array[0];
}
static double minimum(double array[])
{
int n = array.length;
Arrays.sort(array);
return array[0
];
}
static char maximum(char array[])
{
char max = 'z';
int n = array.length;
for (int i = 0; i < n-1; i++)
if (array[i] > max)
{
max = array[i];
}
return max;
}
static int maximum(int array[])
{
int n = array.length;
Arrays.sort(array);
return array[n - 1];
}
static double maximum(double array[])
{
int n = array.length;
Arrays.sort(array);
return array[n - 1];
}
static int minimumat(char array[])
{
char min = 'z';
int n = array.length;
int minat = 0;
for (int i = 0; i < n-1; i++)
{
if (array[i] < min)
{
min = array[i];
}
}
for (int i = 0; i < n; i++)
{
if (array[i] == min)
{
i = minat;
}
}
return minat;
}
static int minimumat(int array[])
{
int n = array.length;
int newarray[] = array;
Arrays.sort(newarray);
int min = newarray[0];
int minat = 0;
for(int i = 0; i <= n; i++)
{
if(array[i] == min)
{
minat = i;
}
}
return minat;
}
static int minimumat(double array[])
{
int n = array.length;
double newarray[] = array;
Arrays.sort(newarray);
double min = newarray[0];
int minat = 0;
for(int i = 0; i <= n; i++)
{
if(array[i] == min)
{
minat = i;
}
}
return minat;
}
static int maximumat(char array[])
{
char max = 'A';
int n = array.length;
int maxat = 0;
for (int i = 0; i < n; i++)
{
if (array[i] > max)
{
max = array[i];
}
}
for (int i = 0; i < n; i++)
{
if (array[i] == max)
{
i = maxat;
}
}
return maxat;
}
static int maximumat(int array[])
{
int n = array.length;
int newarray[] = array;
Arrays.sort(newarray);
int max = newarray[0];
int maxat = 0;
for(int i = 0; i <= n; i++)
{
if(array[i] == max)
{
maxat = i;
}
}
return maxat;
}
static int maximumat(double array[])
{
int n = array.length;
double newarray[] = array;
Arrays.sort(newarray);
double max = newarray[n - 1];
int maxat = 0;
for(int i = 0; i <= n; i++)
{
if(array[i] == max)
{
maxat = i;
}
}
return maxat;
}
static double average(int array[])
{
int sum = 0;
int n = array.length;
for (int i = 0; i < array.length; i++)
{
sum += array[i];
}
double avg = sum / n;
return avg;
}
static double average(double array[])
{
double sum = 0;
int n = array.length;
for (int i = 0; i < array.length; i++)
{
sum += array[i];
}
double avg = sum / n;
return avg;
}
我还编写了一些简单的代码来在另一个类中测试这些方法。
public static void main(String[] args)
{
char[] charArray = {'k', 'p', 'f', 'r', 'D', 'm'};
double doubleArray[] = {5.43, 9.81, 5.37, 7.19, 2.86, 6.55, 2.37, 7.28};
int intArray[] = {40, 7, 53, 34, 61, 70, 29, 49};
ArrayTools ArrayTools = new ArrayTools();
System.out.println(ArrayTools.minimum(charArray));
System.out.println(ArrayTools.minimum(doubleArray));
System.out.println(ArrayTools.minimum(intArray));
System.out.println(ArrayTools.maximum(charArray));
System.out.println(ArrayTools.maximum(doubleArray));
System.out.println(ArrayTools.maximum(intArray));
System.out.println(ArrayTools.minimumat(charArray));
System.out.println(ArrayTools.minimumat(doubleArray));
System.out.println(ArrayTools.minimumat(intArray));
System.out.println(ArrayTools.maximumat(charArray));
System.out.println(ArrayTools.maximumat(doubleArray));
System.out.println(ArrayTools.maximumat(intArray));
System.out.println(ArrayTools.average(intArray));
System.out.println(ArrayTools.average(doubleArray));
}
}
该代码已针对“最小”和“最大”方法正常工作(不要与“最小”和“最大”方法混淆)。但是其余的都没有打印任何东西。
以下是输出:
D
2.37
7
z
9.81
70
答案 0 :(得分:1)
我在您的代码中看到的2个问题是-
1-在static int minimumat(char array[])
方法中,您要重置i的值。应该是
minat = i;
和其他方法中的maxat相似-maximumat()
2-您正在从0到长度(n)循环,因此您可能会在最后一个索引上得到ArrayIndexOutOfBound,因此请排除最后一个。应该是
for(int i = 0; i < n; i++) {
答案 1 :(得分:0)
静态方法以classname.StaticMethodName
的形式调用。
不需要创建ArrayTools类的对象。
删除行ArrayTools ArrayTools = new ArrayTools();
,此程序将正常运行。
minimumat(char array[])
和maximumat(char array[])
方法中存在逻辑错误。
您需要分别为minat=i;
和maxat=i;
设置i=minat;
和i=maxat;
。