アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2022年05月17日

JAVA 多次元配列のイメージ

2次元以上の配列のことを多次元配列と呼ぶ。
2次元配列は、既に配列(※)されているものを、さらにまとめた(配列した)もの。

※配列:データをメモリ上に隙間をあけずに並べたもの


Image_of_multidimensional_array.jpg



添字と値を確認するサンプルプログラム

public class MultidimensionalArrays{
 public static void main(String[] args){

  int[][] array = {{12,23,34}, {45,56,67}, {78,89,90}};

  for (int i = 0; i < array.length; i++){
   for (int j = 0; j < array[i].length; j++){
    System.out.println("array[" + i + "][" + j + "] = " + array[i][j]);
   }
  }

 }
}

2021年01月04日

JAVA equalsメソッド注意点

equalsメソッドを利用する際に比較対象の前後を気にしないで書いてしまうと、  NullPointerException が発生する可能性がある。

例外を避けるためには、Nullとならない比較対象の文字列を初め(先)に書いておく。


【Ex.】
A.equals(X) の場合
  ・Aがnullの場合は NullPointerException が発生する
  ・AがnullではなくXがnullの場合は false を返す

2019年01月25日

JAVA scannerクラスのnextInt()を利用した際、無限ループに陥ってしまう

scannerクラスのnextInt()を利用し、キーボードから数値を入力させる。
このとき、数値以外の文字が入力されると、プログラムの書き方によっては無限ループに陥ってしまう。

【Ex.】 数値を3つ入力させる。数値以外の文字が入力された場合は再度入力を促す。
 public static void main(String[] args) {
  int input[] = new int[3];
  Scanner scan = new Scanner(System.in);

  System.out.println("数字を入力してください");
  for(int n = 0;n < 3;n++){
   System.out.print((n + 1) + "個目 :");
   try{
    input[n] = scan.nextInt();
   }
   catch(InputMismatchException e){
    System.out.println("数字を入力してください");
    System.out.println("もう一度入力してください");
    n--;
   }
  }
 }


上記プログラムは、一見問題なく動くように見えるが、文字が入力されると無限ループに陥ってしまう。
これは、スキャナが InputMismatchException をスローすると、例外の原因となったトークンを読み飛ばさないため。

つまり、文字が入力され例外が発生した場合、
通常は(readLine()などでは)エラーになった文字は捨ててしまうが(読み飛ばしてしまうが)、
nextInt()はそれを読み飛ばさないため、永遠にエラー文字を読み取り続け無限ループに陥ってしまう。

この場合、オブジェクトを初期化し「前回のエラー文字を持っていない」新しいオブジェクトで呼び出すようにすることで解消される。
 public static void main(String[] args) {
  int input[] = new int[3];

  System.out.println("数字を入力してください");
  for(int n = 0;n < 3;n++){
   System.out.print((n + 1) + "個目 :");
   try{
    Scanner scan = new Scanner(System.in);
    input[n] = scan.nextInt();
   }
   catch(InputMismatchException e){
    System.out.println("数字を入力してください");
    System.out.println("もう一度入力してください");
    n--;
   }
  }
 }

2019年01月18日

JAVA ループ内でリストの要素を削除する

forループ内で該当する値を削除する(removeする)と下記が発生する。
(リストを削除しつつlistの要素をgetしょうとすると下記が発生する。)
  「java.util.ConcurrentModificationException」

この場合、for文ではなくwhile文を利用する。

【Ex.】 valueの要素値が2の場合、その要素を削除する。
public static void main(String[] args) {
 int ransu = 99;
 ArrayList<Integer> value = new ArrayList<Integer>();
 while(0 != ransu){
  ransu = (int)(Math.random()*11);
  System.out.println("0〜10の値を出力:" + ransu);
  value.add(ransu);
 }
↑ まずは、0から10までの乱数を取得(※0が出たら乱数取得を終了)

■list.remove(Object o)メソッドを使う場合
 while(value.remove((Integer)2)){}

■iterator(イテレータ)を使う場合
 Iterator itr = value.iterator();
 while(itr.hasNext()){
  Integer i = (Integer)itr.next();
  if(2 == i){
   itr.remove();
  }


※その他、後でまとめてremoveAllする方法でもよい。
その買うを、もっとハッピーに。|ハピタス
\ハピタスの紹介キャンペーンです/
⇒登録後に行う「ハピタス検定」の答えはこちら

※ハピタスをもっと知りたいかたは他で検索してみてください

ブログ内を検索
ファン
カテゴリ
よく倒されますが、へこたれながら起き上がるSEの備忘録です

Windows(20)
SQL(1)
JAVA(4)
VBScript(14)
VBA(15)
Other(14)
書籍(1)
記事ランキング
  1. 1. 確率の収束に必要な試行回数
  2. 2. no img Tera Term(テラターム) 覚えておくと便利なコマンド一覧
  3. 3. no img VBScript マウスポインタを自動的に移動させクリックするスクリプト
  4. 4. no img Windows ディスク使用率100%を改善させる
  5. 5. VBScript タスクスケジューラのメッセージを最前面に表示するスクリプト
広告
会員登録せずに無料で読める!! 漫画読み放題のサービス

動画編集・YouTuberを始めたい方向け 無料動画編集ソフト

クラウド型レンタルサーバー クラウド型レンタルサーバー

Amazonで購入する
※Amazonのアソシエイトとして、七転八起SEの備忘録は適格販売により収入を得ています。

メンタルヘルス・マネジメント検定試験II種ラインケアコース過去問題集_2023年度版
メンタルヘルス・マネジメント検定試験II種 過去問題集〈2023年度版〉

×

この広告は30日以上新しい記事の更新がないブログに表示されております。