エンジニア成長日記 swaponQ

コンピュータサイエンス専攻の一般人のブログです。

新・明解 Java 入門 演習 7-18, 7-19, 7-20, 7-21 解答

Hello, Terminal!swaponQです!

今回は演習 7-18, 7-19, 7-20, 7-21 に取り組んでいこうと思います。

  • 演習 7-18

配列aから要素a[idx]を削除するメソッドaryRmvを作成せよ。


ソースコード

import java.util.Scanner;

class ex07_18{
  static void aryRmv(int[] a,int idx) {
    for(int i = idx; i<a.length-1;i++){
      a[i] = a[i + 1];
    }
  }
  public static void main(String[] args) {
    Scanner stdIn = new Scanner(System.in);
    System.out.print("要素数:");
    int num = stdIn.nextInt();
    int[] x = new int[num];
    for (int i = 0; i < num; i++) {
      System.out.print("x[" + i + "] : ");
      x[i] = stdIn.nextInt();
    }
    System.out.print("削除したい要素:");
    int idx = stdIn.nextInt();
    aryRmv(x,idx);
    for (int i = 0; i < num-1; i++)
    System.out.println("x[" + i + "] = " + x[i]);
  }
}

・実行結果

要素数:3
x[0] : 2
x[1] : 6
x[2] : 3
削除したい要素:3
x[0] = 2
x[1] = 6
  • 演習 7-19

配列aから要素a[idx]を先頭とするn個の要素を削除するメソッドaryRmvNを作成せよ。

ソースコード

import java.util.Scanner;

class ex07_19{
  static void aryRmvN(int[] a,int idx,int n) {
    for(int i = idx; i<a.length-n;i++){
      a[i] = a[i + n];
    }
  }
  public static void main(String[] args) {
    Scanner stdIn = new Scanner(System.in);
    System.out.print("要素数:");
    int num = stdIn.nextInt();
    int[] x = new int[num];
    for (int i = 0; i < num; i++) {
      System.out.print("x[" + i + "] : ");
      x[i] = stdIn.nextInt();
    }
    System.out.print("削除したい要素:");
    int idx = stdIn.nextInt();
    System.out.print("削除したい個数:");
    int n = stdIn.nextInt();
    aryRmvN(x,idx,n);
    for (int i = 0; i < num-n; i++)
    System.out.println("x[" + i + "] = " + x[i]);
  }
}

・実行結果

要素数:3
x[0] : 1
x[1] : 6
x[2] : 3
削除したい要素:6
削除したい個数:2
x[0] = 1
  • 演習 7-20

配列の要素a[idx]にxを挿入するメソッドaryInsを作成せよ。

ソースコード

import java.util.Scanner;

class ex07_20{
  static void aryIns(int[] a,int idx,int x ) {
    int t = a.length-1;
    for(int i = a.length-1; i>idx; i--){
      a[i] = a[i - 1];
    }
    a[idx] = x;
  }
  public static void main(String[] args) {
    Scanner stdIn = new Scanner(System.in);
    System.out.print("要素数:");
    int num = stdIn.nextInt();
    int[] a = new int[num];
    for (int i = 0; i < num; i++) {
      System.out.print("a[" + i + "] : ");
      a[i] = stdIn.nextInt();
    }
    System.out.print("挿入したい要素:");
    int n = stdIn.nextInt();
    System.out.print("挿入したい場所:");
    int idx = stdIn.nextInt();
    aryIns(a,idx,n);
    for (int i = 0; i < num; i++)
    System.out.println("a[" + i + "] = " + a[i]);
  }
}

・実行結果

要素数:3
a[0] : 2
a[1] : 4
a[2] : 6
挿入したい要素:0
挿入したい場所:0
a[0] = 0
a[1] = 2
a[2] = 4
  • 演習 7-21

配列aと配列bの全要素をの値を交換するメソッドaryExchngを作成せよ。

ソースコード

import java.util.Scanner;

class ex07_21{
  static void aryExchng(int[] a, int[] b) {
    int buf = 0;
    int length = a.length;
    if (length > b.length) {
      length = b.length;
    }
    for(int i = 0; i < length; i++) {
      buf = b[i];
      b[i] = a[i];
      a[i] = buf;
    }
  }

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

    System.out.print("配列aの要素数:");
    int na = stdIn.nextInt();
    int[] a = new int[na];
    for (int i = 0; i < na; i++) {
      System.out.print("a[" + i + "] : ");
      a[i] = stdIn.nextInt();
    }
    System.out.print("配列bの要素数:");
    int nb = stdIn.nextInt();
    int[] b = new int[nb];
    for (int i = 0; i < nb; i++) {
      System.out.print("b[" + i + "] : ");
      b[i] = stdIn.nextInt();
    }
    aryExchng(a,b);
    System.out.println();
    for (int i = 0; i < na; i++)
    System.out.println("a[" + i + "] : "+a[i]);
    for (int i = 0; i < nb; i++)
    System.out.println("b[" + i + "] : "+ b[i]);
  }
}

・実行結果

配列aの要素数:3
a[0] : 4
a[1] : 1
a[2] : 4
配列bの要素数:4
b[0] : 1
b[1] : 5
b[2] : 3
b[3] : 5

a[0] : 1
a[1] : 5
a[2] : 3
b[0] : 4
b[1] : 1
b[2] : 4
b[3] : 5

今回は以上です。お疲れ様でした!
次回は演習 7-22, 7-23, 7-24, 7-25 です。

Goodbye, Terminal… swaponQでした!