java - 为什么我的方法没有返回任何东西?
问题描述
我编写了这段代码来对字符数组、整数和双精度数进行一些计算。
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
解决方案
我在您的代码中看到的两个问题是-
1 - 在static int minimumat(char array[])
方法中,您正在重置 i 的值。它应该是
minat = i;
和其他方法中的类似 maxat - maxat()
2-您正在从 0 循环到长度 (n),因此您可能会在最后一个索引上获得 ArrayIndexOutOfBound,因此排除最后一个。它应该是
for(int i = 0; i < n; i++) {
推荐阅读
- c# - ipa运行时如何禁用屏幕关闭
- ruby - 从 Hanami 中的控制台删除记录
- sql-server - PowerShell 从 SQL 查询返回所有消息
- socket.io - Socket.io 传输关闭和 ping 超时错误
- r - R:循环时数据集变为空?
- macos - 检测 MAC 中的键盘事件
- javascript - 用 ng-change 进行 ng-checked 不起作用
- css - JavaFX SceneBuilder 样式表
- ruby-on-rails - mailgun rails - 如何为每个 ActionMailer 定义 mailgun_settings
- java - windows上ubuntu的java交叉编译器