2017-02-11 72 views
0

所以我需要找到10个阵列中的最大和最小值,并交换最大值和最小值。如果你有多种方法来解决这个问题,那会更好。交换最大和最小

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    int [] integers = new int [10]; 
    int max = 0; 
    int min = 0; 
    System.out.println("Please enter the 10 integers:"); 

    for (int counter = 0 ; counter < integers.length ; counter++) { 
        integers[counter] = scan.nextInt(); 
    } // end for loop 

    integers[0] = max; 
    integers[0] = min;    // keep getting min as 0 

    for (int counter = 0 ; counter < integers.length ; counter++) { 
     if (integers[counter] > max) { 
      max = integers[counter]; 
      maxIndex = counter; 
     } 
     if (integers[counter] < min) { 
      min = integers[counter] ; 
      minIndex = counter; 
     } 

    } // end loop 

    System.out.println(max); 
    System.out.println(min);   

} 
+3

亲爱的胜利者,请不要让我们觉得我们应该做你的功课。试着告诉我们你已经做了什么以及你尝试过什么。然后我们可以谈谈你具体的问题 –

+0

我想你可能意指'min =整数[0];',而不是'整数[0] = min;'。 (相同的最大) –

+0

你是完全正确的Mathhias,并感谢你很多提醒我,并激励我(真正的谈话)将继续尝试,直到我投降,也感谢安迪。工作..你能至少给我一个交换的提示吗?一个操作员或其他东西,他们没有教我这就是为什么 – Fawaz

回答

1

你不需要maxmin(只是指数)。另外,您应该从索引1(第二个元素)开始比较。最后,在循环之后,您可以交换两个索引处的值。像,

int maxIndex = 0, minIndex = 0; 
for (int counter = 1; counter < integers.length; counter++) { 
    if (integers[counter] > integers[maxIndex]) { 
     maxIndex = counter; 
    } 
    if (integers[counter] < integers[minIndex]) { 
     minIndex = counter; 
    } 

} // end loop 
int t = integers[maxIndex]; 
integers[maxIndex] = integers[minIndex]; 
integers[minIndex] = t; 
System.out.println(integers[maxIndex]); 
System.out.println(integers[minIndex]); 
+0

尽管我相信代码能够正常工作,但我更怀疑它是否会放弃原始海报。我希望看到有助于解决问题中代码中任何问题的答案。 –

+0

@ OleV.V。我从问题中得到了代码,OP没有设置(或使用)maxIndex或minIndex。没有这些,你不能交换数组中的两个元素。 –

+0

非常感谢你,你教了我一些东西,下次我只会让人们告诉我如何在没有代码的情况下用文字“你是怎么写的”来做的,我会尝试直到我想要自杀。谢谢 – Fawaz

0

可以使用排序algorithm.Here我用气泡sort.After排序索引0元件将是分钟,阵列的最后一个索引将是最大,然后就可以交换它们:

BufferedReader rd=new BufferedReader(new InputStreamReader(System.in)); 

    try{ 

     int n=Integer.parseInt(rd.readLine()); 

     String[] s=rd.readLine().split(" "); 

     int[] num=new int[n]; 

     for(int i=0;i<n;i++){ 
      num[i]=Integer.parseInt(s[i]); 

     } 




     int temp=0; 
     //bubble sort 
     for(int i=0;i<n-1;i++){ 


      for(int j=0;j<n-1-i;j++){ 

       if(num[j]>num[j+1]){ 
        temp=num[j]; 
        num[j]=num[j+1]; 
        num[j+1]=temp; 
       } 
      } 
     } 

     //swapping max and min 
     temp=num[0]; 
     num[0]=num[n-1]; 
     num[n-1]=temp; 


    } 
    catch(Exception e){ 
     e.printStackTrace(); 

    } 
+0

这似乎过分复杂的事情。 –