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,以及他们对应的角标
展开
8个回答
展开全部
遍历计算,赋值。
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"是换行
你只输出了角标啊,我要把值也对应输出来
展开全部
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);
}
}
}
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);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用面向对象思想。
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个都输出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写两个forx循环,第一个循环遍历数据,输出每个元素;第二个遍历输出出了那个 元素的每个元素,在第二个遍历中进行比较,把最大的和最小的比较出来
追问
求具体的程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先排序,找出最小和最大值,在和原数组数据进行比较,这样很容易得到数组下标。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询