java一个一维数组有2个相同最小值和最大值,怎么输出及其位置?

比如int[]a={12,11,134,2,21,42,2,111,23,134,54,62},怎么输出2和134,以及他们对应的角标... 比如int [] a={12,11,134,2,21,42,2,111,23,134,54,62},怎么输出2和134,以及他们对应的角标 展开
 我来答
百度网友2a06c5a
2013-08-30 · TA获得超过188个赞
知道小有建树答主
回答量:133
采纳率:100%
帮助的人:99.5万
展开全部
  遍历计算,赋值。
    public static void main(String[] args){
        int [] a={12,11,134,2,21,42,2,111,23,134,54,62};
        
        int tempmin = 0, tempmax = 0;
        List<Integer> minIndex = new ArrayList<Integer>(), maxIndex = new ArrayList<Integer>();
        
        for (int i = 0; i < a.length; i++)
        {
            if (i == 0)
            {
            //这里假设了第一位数字就是最大值和最小值
                tempmin = a[0];
                tempmax = a[0];
                minIndex.add(0);
                maxIndex.add(0);
            }
            else
            {
                int temp = a[i];
                if (temp < tempmin)
                {
                    tempmin = temp;
                    minIndex.clear();
                    minIndex.add(i);
                }
                else if (temp == tempmin)
                {
                    minIndex.add(i);
                }
                
                if (temp > tempmax)
                {
                    tempmax = temp;
                    maxIndex.clear();
                    maxIndex.add(i);
                }
                else if (temp == tempmax)
                {
                    maxIndex.add(i);
                }
            }
            
        }
        System.out.println("最小值下标为:" + minIndex + "   最大值下标为:" + maxIndex);
    }

 

快试试啊,正确答案呢····


怎么看不到你的追问呢?

更多追问追答
追问
我想输出结果是这样的max=134    2\nmax=134    9 \nmin=2     3\nmin=2    6//"\n"是换行
你只输出了角标啊,我要把值也对应输出来
dz8912080906
2013-08-30
知道答主
回答量:32
采纳率:0%
帮助的人:24.7万
展开全部
public static void main(String[] args) {
List<Integer> arr = new ArrayList<Integer>();
arr.add(12);
arr.add(11);
arr.add(134);
arr.add(2);
arr.add(21);
arr.add(42);
arr.add(2);
arr.add(111);
arr.add(23);
arr.add(134);
arr.add(54);
arr.add(62);
int maxNum = Collections.max(arr);
int minNum = Collections.min(arr);
for(int i = 0; i < arr.size(); i++)
{
if(arr.get(i) == maxNum)
{
System.out.println("最大的数的下标为:"+i+"----最大数为:"+maxNum);
}
if(arr.get(i) == minNum)
{
System.out.println("最小的数的下标为:"+i+"----最小数为:"+minNum);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9f16d3635
2013-08-30 · 超过14用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:37.5万
展开全部

用面向对象思想。

public class Test
{
    int num;
    int index;
    Test(int num, int index)
    {
this.num = num;
this.index = index;
    }
    public static void main(String[] args)
    {
int[] a = { 12, 11, 134, 2, 21, 42, 2, 111, 23, 134, 54, 62 };
Test min = new Test(a[0], 0), max = new Test(a[0], 0);
for (int i = 1; i < a.length; i++)
{
   if (a[i] > max.num)
   {
max.num = a[i];
max.index = i;
   }
   if (a[i] < min.num)
   {
min.num = a[i];
min.index = i;
   }
}
System.out.println("min:" + min.num + " index:" + min.index);
System.out.println("max:" + max.num + " index:" + max.index);
    }
}
追问
你这还是只输出了134和2的一个角标啊,我要2个都输出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoliang_159
2013-08-30 · TA获得超过129个赞
知道答主
回答量:136
采纳率:0%
帮助的人:75.9万
展开全部
import java.util.*;
public class Test { 
 public static void main(String[] args) {
  int[] num={12,11,134,2,21,42,2,111,23,134,54,62};
  Arrays.sort(num);
  System.out.println(num[0]+"\t"+num[num.length-1]); 
 }  
}

//下面这个不更改顺序
public class Test { 
 public static void main(String[] args) {
  int[] num={12,11,134,2,21,42,2,111,23,134,54,62};
  int max=num[0];
  int min=num[0];
  int maxIndex=0;//记录最大值位置   
int minIndex=0; //记录最小值位置   
for(int i=1;i<num.length;i++){
   if(max<num[i]){
    max=num[i];
maxIndex=i+1; 
   }
   if(min>num[i]){
    min=num[i];
 
minIndex=i+1;   }
  }
  System.out.println(maxIndex+"\t"+minIndex); 
 }  
}
更多追问追答
追问
这个没有输出他们对应的位置撒。我就是要输出他们的位置哦,这个刚输出大小我也会哦
追答
public class Test { 
public static void main(String[] args) {
int[] num={12,11,134,2,21,42,2,111,23,134,54,62};
int max=num[0];
int min=num[0];
int maxIndex=0;//记录位置
int minIndex=0;//记录位置
for(int i=1;inum[i]){
min=num[i];
minIndex=i+1;
}
}
System.out.println(maxIndex+"\t"+minIndex);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吕先生爱叨叨
2013-08-30 · TA获得超过398个赞
知道小有建树答主
回答量:874
采纳率:0%
帮助的人:326万
展开全部
写两个forx循环,第一个循环遍历数据,输出每个元素;第二个遍历输出出了那个 元素的每个元素,在第二个遍历中进行比较,把最大的和最小的比较出来
追问
求具体的程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2008lcm
2013-08-30 · 超过31用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:95万
展开全部
先排序,找出最小和最大值,在和原数组数据进行比较,这样很容易得到数组下标。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式