1. ホーム
  2. java

[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ

2022-03-04 22:12:21

質問

私の課題では、この特定のJava配列(これはオンラインブックで、テスト段階で50%の割合)を半分ほど解いています。しかし、私は何が欠けているのかを理解することができません。このコードでは、私は(要求された任意の量の)2つの数字を逆に入力する必要があります。私は同じような状況をオンラインで探してみましたが、私が必要とするものに答えてくれるものはありませんでした。

方向は? 配列のパラメータの最初と最後の要素を入れ替える swapArrayEnds() メソッドを作成しなさい。例:sortArray = {10, 20, 30, 40} は {40, 20, 30, 10} になる。配列のサイズは4と異なる場合があります。

import java.util.Scanner;

public class ModifyArray {
// ANYTHING ABOVE THIS COMMENT CANNOT BE MODIFIED
   public static void swapArrayEnds(int[] sortArray, int numElem) {
      numElem = 4;
      int i = 0;         // Loop index
      int tmpStore = 0;  // Temp variable for swapping

      for (i = 0; i < numElem; ++i) {
         tmpStore = sortArray[i]; // Do swap
         sortArray[i] = sortArray[numElem - 1];
         sortArray[numElem - 1] = tmpStore;
      }

      return;
   }
// ANYTHING BELOW THIS COMMENT CANNOT BE MODIFIED
   public static void main (String [] args) {
      int numElem = 4;
      int[] sortArray = new int[numElem];
      int i = 0;

      sortArray[0] = 10;
      sortArray[1] = 20;
      sortArray[2] = 30;
      sortArray[3] = 40;

      swapArrayEnds(sortArray, numElem);

      for (i = 0; i < numElem; ++i) {
         System.out.print(sortArray[i]);
         System.out.print(" ");
      }
      System.out.println("");

      return;
   }
}

今のところ、私のエラーコードは

Testing with original sortArray = {10, 20, 30, 40}
Expected output:  40 20 30 10 
Your output:  40 10 20 30 
Tests aborted.

どうしてこのような入力になったのかわかりませんが、単に元の最後の数字が元の最初の数字の前に置かれただけなのです。どうすれば、最初の数字と最後の数字が入れ替わるようになるのでしょうか?

どのように解決するのですか?

以来 のみ の場合、末尾を入れ替える必要があり、この入れ替えを行う必要があります。 正確に一度 (繰り返しではない)というのはどうでしょう。

  // Why do you need yo swap it in a cycle, thus many times???
  /* Commenting faulty code out
  for (i = 0; i < numElem; ++i) {
     tmpStore = sortArray[i]; // Do swap
     sortArray[i] = sortArray[numElem - 1];
     sortArray[numElem - 1] = tmpStore;
  }
  */

  // A single time should do
  tmpStore = sortArray[0]; // Do swap with the starting end
  sortArray[0] = sortArray[numElem - 1];
  sortArray[numElem - 1] = tmpStore;


(注:初心者を馬鹿にしたような無意味なコメント/回答はもう飽きたと思います)