【发布时间】:2020-09-12 15:10:59
【问题描述】:
我编写这段代码是为了对字符、整数和双精度数组进行多次计算。
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
【问题讨论】:
-
我们一般使用
type[] var-name而不是type var-name[] -
为什么你不只包括不起作用的部分?阅读数千行并找出问题所在的 10 行是很困难的。
-
请不要在您的问题标题或问题文本中加上“已解决”。如果答案解决了主要问题,则接受该答案。有关更多信息,请从帮助站点阅读此部分:someone answers。
-
@Aniox 我们是我们?我不确定在变量名而不是类型上声明数组标识符有什么问题。
-
@rjames 你能把你的问题缩小到特别不工作的部分吗?让我们代替您调试代码,看看哪些方法没有按预期工作,真的很不方便。尝试提供更清晰的上下文。