繁体   English   中英

尝试根据用户输入交换数组元素

[英]Trying to swap array elements based on user input

因此,我必须交换具有5个值的数组中的两个元素,但是要交换的两个元素必须从键盘上获取。 先前的问题是交换到特定的字符,我已经完成了,但是我不确定如何从键盘中获取要用于交换的数字。 其中一些是上一章遗留下来的,在那我知道必须交换的元素。

import java.util.Scanner;
public class Swap2 {

  public static void main(String []args) {
    Scanner keyboardIn = new Scanner (System.in);

    int[] numbers = new int []{12,9,33,28,5};
    int temp = 0, first, second;

    System.out.println ("Before the swap: ");
    for(int i=0; i < numbers.length; i++) {
      System.out.print(numbers[i] + " ");   
    }
    System.out.println();
    System.out.println ("Enter the first number to swap:");
    first = keyboardIn.nextInt();
    System.out.println ("Enter the second number to swap:");
    second = keyboardIn.nextInt();
    System.out.println ();
    temp = numbers[3];
    numbers [3] = numbers [1];
    numbers [1] = temp;

    System.out.println ("After the swap:");
    for (int i = 0; i < numbers.length; i++) {
      System.out.print (numbers[i] + " ");
    }
  }
}

您实际上并没有交换用户输入的数字,而是总是将4th元素与1st交换。

要交换元素,您需要找出它们所属的索引。

public static int indexOf(int []arr, int ele)
{
  for(int i = 0; i < arr.length; ++i)
   if(arr[i] == ele)
     return i;
  return -1;
}

现在要交换这些元素,请调用此函数。

int first = sc.nextInt();

int firstIndex = indexOf(arr, first);

int second = sc.nextInt();

int secondIndex = indexOf(arr, second);

int temp;

temp = arr[firstIndex];
arr[firstIndex] = arr[secondIndex];
arr[secondIndex] = temp;

你为什么不试试这个。 请记住,数组索引从0开始。

import java.util.Scanner;




    public class Swap2
    {
   public static void main(String []args)
   {
   Scanner keyboardIn = new Scanner (System.in);

    int[] numbers = new int []{12,9,33,28,5};
   int temp, first, second;

      System.out.println ("Before the swap: ");
      for(int i=0; i < numbers.length; i++)
      {
         System.out.print(numbers[i] + " ");

      }
          System.out.println ();
          System.out.println ("Enter the first number to swap:");
          first = keyboardIn.nextInt();
          System.out.println ("Enter the second number to swap:");
          second = keyboardIn.nextInt();
          System.out.println ();
          temp = numbers[first];
          numbers [first] = numbers [second];
          numbers [second] = temp;

         System.out.println ("After the swap:");
         for (int i = 0; i < numbers.length; i++)
         {
            System.out.print (numbers[i] + " ");
         }
   }
}

您必须定义索引...

import java.util.Scanner;

    public class Swap {
        public static void main(String[] args) {
            Scanner keyboardIn = new Scanner(System.in);

            /* enter code here */int[] numbers = new int[] { 12, 9, 33, 28, 5 };
            int temp = 0, first, second;
            int index1 = 0 , index2 = 0;
            int j , k ;

            System.out.println("Before the swap: ");
            for (int i = 0; i < numbers.length; i++) {
                System.out.print(numbers[i] + " ");

            }
            System.out.println();
            System.out.println("Enter the first number to swap:");
            first = keyboardIn.nextInt();
            System.out.println("Enter the second number to swap:");
            second = keyboardIn.nextInt();
            System.out.println();
            for(k = 0 ; k < numbers.length; k++){
                if(numbers[k] == first)
                    index1 = k;
            }
            for(j = 0 ; j < numbers.length; j++){
                if(numbers[j] == second)
                    index2 = j;
            }
            temp = numbers[index1];
            numbers[index1] = numbers[index2];
            numbers[index2] = temp;

            System.out.println("After the swap:");
            for (int i = 0; i < numbers.length; i++) {
                System.out.print(numbers[i] + " ");
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM