【发布时间】:2015-04-27 08:29:25
【问题描述】:
正如标题所述,我试图从 int (int mode(int [] a) 类型的方法返回多个整数。该方法旨在接收一个整数数组并确定模式是什么。另一个问题是int [] a 索引中的每个值的范围是 1-3。我无法创建对象、其他方法来处理部分解决方案或导入任何帮助我的东西。
我遇到的问题是数组中是否有多种模式
即。 int [] array = {1,2,2,3,3,4,5,6}
如您所见,在这种情况下有两种模式,即 2 和 3,我无法弄清楚如何从一种方法返回多个整数。
这是我的教授们的指示”
"编写方法 int mode(int []a)。这个函数接受一个从 1 到 a.length 索引的数组 a。a 的每个单元格包含 1,2 或 3。你的函数返回值 (1 ,2,3) 最常出现在数组 a 中。您不应使用任何导入(即 Math、arraylists 等)或更改返回类型。假设 main 仅包含一个数组,然后调用在 main 中使用上述数组的 mode 方法。这里是模板:"
int 模式(int [] a){
}
我的代码如下所示:
public static int mode(int [] a){
int value = 0;
int countOne= 0;
int countTwo = 0;
int countThr = 0;
for(int i =0;i<a.length;i++){
int count = 0;
for(int j=i+1;j<a.length;j++){
if(a[i] == a[j]){
if(a[i] == 1){
countOne++;
}
if(a[i] == 2){
countTwo++;
}
if(a[i] == 3){
countThr++;
}
}
}
}
if(countOne > countTwo && countOne > countThr)
value = countOne;
if(countTwo > countOne && countTwo > countThr){
value = countTwo;
}
if(countThr > countOne && countThr > countTwo){
value = countThr;
}
/* if(countThr == countTwo){
return countThr, countTwo;
if(countOne == countTwo){
//return countOne, countTwo;
if(countOne == countThree){
return countOne, countThree;
*/
return value;
`
main{
int [] a = {1,2,2,3,3};
System.out.println(modeTwo(a));
Output:
3
虽然三个是部分正确的,因为在这种情况下有多种模式我想要的输出是
Desired Output:
2 3
在模式方法中,我只是为 1-3 创建一个计数器,以查看每个在数组中出现的次数。然后我设置条件来检查哪个是最大的。我试图创建条件来检查它们是否也相等,但是它不起作用,因为我必须返回两个整数。我完全迷路了。任何帮助将不胜感激。
int 模式(int [] a){
}
【问题讨论】:
-
返回类型应该类似于
Set<Integer>或int[]。它不应该是int。 -
只需创建一个整数数组,找到出现次数最多的值,然后添加出现次数最多的值并返回。然后在 main 中迭代该数组并打印元素。
-
那么要么你的教授对 Java 的返回类型有根本的误解,要么你对你的作业有根本的误解
-
您可以返回
23并分隔数字,但这似乎很老套。你确定你正确理解了教授的问题吗? -
从说明中我假设应该总是有 一个 出现最频繁的数字。但是,为了安全起见,我会在方法中添加注释并指定在有多个数字的情况下的行为。类似“如果两个或多个数字出现相同的情况,则返回最大/最小/随机/第一个索引/最后一个索引”。或者任何你认为最合适的。你的教授不能为此责备你。
标签: java arrays return-value mode