-
【Java】2つのソート済み配列から最も近いペアを見つけるプログラムの書き方
2つのソート済み配列が与えられたとき、それぞれの配列から1要素ずつ選んだペアのうち、合計が指定した目標値に最も近くなる組み合わせを見つける問題は、アルゴリズム学習における定番テーマの一つです。本記事では、効率的なツーポインタ(二重走査)手法を用いたJavaプログラムを紹介します。 サンプルコード import java.util.Arrays; public class Demo { void closest_pair(int my_arr_1[], int my_arr_2[], int sum){ // ツーポインタ手法は配列がソート済みであることが前提のため、先にソー
-
【Java】配列内で奇数回出現する数値を見つけるプログラム
配列の中から奇数回出現する数値を見つけるのは、アルゴリズム学習やコーディング面接でもよく登場する定番の課題です。Javaでは、二重ループを使って各要素の出現回数を数えることで、シンプルに実装できます。ここでは、実際に動作するサンプルコードとその詳しい解説を紹介します。 サンプルコード public class Demo { static int odd_occurs(int my_arr[], int arr_size){ int i; for (i = 0; i < arr_size; i++){ int count =
-
Javaで文字ストリームから最初の非反復文字を検索する方法
連続的に入力される文字のストリームの中から、最初に現れた重複しない文字(非反復文字)を検索するには、Javaではリストとboolean型の配列を組み合わせるのが効果的です。以下にその実装例を示します。 サンプルコード import java.util.ArrayList; import java.util.List; public class Demo{ final static int max_chars = 256; static void non_repeating_char(){ List<Character> my_list = new
-
Javaの「到達不能コードエラー」とは?発生原因と具体例をわかりやすく解説
Javaでプログラムをコンパイルする際、「unreachable statement(到達不能なステートメント)」というエラーが発生することがあります。これは、どのような状況でも実行されることのないコードが存在する場合にコンパイラが検出し、コンパイルが失敗することで起こるエラーです。 到達不能コードエラーの主な原因 到達不能コードエラーは、さまざまな理由によって発生します。代表的な原因は以下のとおりです。 無限ループの後ろに処理が記述されている return文の後に処理が記述されている break文やcontinue文の後に処理が記述されている throw文の後に処理が記述されている サン
-
【Java】TreeMapを使ってユーザー定義オブジェクトを年齢順にソートする方法
Javaでユーザー定義オブジェクト(例:名前と年齢の組み合わせ)をソートしたい場合、TreeMapを活用すると簡単に実現できます。TreeMapはキーを自動的に昇順に並べ替える特性を持つため、年齢などの数値をキーにすれば、データを効率よく整理できます。 サンプルコード import java.io.*; import java.util.*; public class Demo{ static void sort_objects(String my_data){ String[] my_vals = my_data.spli
-
Javaで定義済みクラス名をクラス名や変数名として使う方法
Javaでは、NumberやStringなど、あらかじめ標準ライブラリに用意されている(事前定義された)クラスと同じ名前を、独自のクラス名や変数名として使用することが可能です。ただし、いくつか注意すべきポイントがあります。ここでは、具体的なコード例を挙げながら詳しく解説します。 定義済みクラス名をクラス名として使用する まず、定義済みクラス名をそのままクラス名として使う例を見てみましょう。 コード例 public class Number { public static void main(String[] args) {  
-
Javaの数値リテラルでアンダースコア(_)を使う方法
Java 7以降では、数値リテラル内にアンダースコア(_)を挿入することで、大きな数値を読みやすく区切ることができます。桁の多い整数や小数を扱う際に、人間の目にとって視認性が大きく向上する便利な機能です。以下は、Javaの数値リテラルでアンダースコアを使用する例です。サンプルコードpublic class Demo{ public static void main (String[] args) throws java.lang.Exception{ int my_num_1 = 6_78_00_120; System.out.println(The n
-
Java 9のJShellで変数を使う方法【宣言と自動割り当てを解説】
JShellでの変数宣言の基本Java 9から導入された対話型ツール「JShell」では、セッション中に自由に変数を宣言できます。セッションにログインした後、次のように変数を宣言してみましょう。jshell> int val = 56;上記のコマンドを実行すると、以下のような出力が表示されます。なお、行末のセミコロン(;)は省略可能で、セミコロンがなくても正常に実行されます。出力結果val ==> 56変数名に対して整数値を代入し、Enterキーを押すと、その結果がJShellのコマンドラインの次の行に表示されます。これにより、コードを書きながら即座に変数の状態を確認できるのがJS
-
Javaでコンソールから入力を読み取る方法【ScannerとBufferedReaderの使い方】
Javaでは、標準入力(コンソール)からデータを読み取るための方法がいくつか用意されています。この記事では、代表的な2つの手法——「Scannerクラス」と「BufferedReaderクラス」——を使った入力の読み取り方を、サンプルコードと実行結果とともにわかりやすく解説します。 Scannerクラスを使った入力の読み取り まずは、最も手軽で広く使われているScannerクラスの例から見ていきましょう。 サンプルコード import java.util.Scanner; public class Demo{ public static void main(String args[
-
Javaの静的メソッドはオーバーロード・オーバーライドできる?違いと注意点をコード例で解説
Javaにおける静的メソッド(staticメソッド)はオーバーロード可能ですが、オーバーライドは不可能です。ただし、オーバーロードにも条件があり、2つのメソッドが「static」キーワードの有無だけでしか違わない場合、それらをオーバーロードすることはできません。この記事では、静的メソッドのオーバーロードとオーバーライドに関する挙動を、具体的なコード例とともに詳しく解説します。静的メソッドのオーバーロード静的メソッドは、引数の型や数が異なれば、同じクラス内で複数定義できます。以下の例を見てみましょう。例public class Demo{ public static void test(
-
Javaプログラムの基本構造とメンバーの役割を徹底解説
Javaでコードを記述する際には、標準として守るべき一連のルールや規約が存在します。たとえば、クラスには変数(フィールド)と関数(メソッド)が含まれ、メソッドはフィールドを操作するために使われます。さらに、クラスは継承によって拡張したり、改良したりすることも可能です。 Javaプログラムの基本構造 インポートするパッケージの一覧; public class <クラス名> { コンストラクタ(ユーザー定義または暗黙的に生成) {
-
JavaのStream APIフィルターを使ってリストの合計値を求める方法
Javaでは、Stream APIのfilterメソッドを利用することで、条件に合致する要素だけを抽出し、その合計値を簡潔なコードで求めることができます。本記事では、実際のサンプルコードと実行結果をもとに、その実装方法と内部処理の流れをわかりやすく解説します。 サンプルコード import java.util.*; public class Demo { public static void main(String[] args) { List<Integer> my_list = new ArrayList<Integer>();
-
Javaで別のスレッドに割り込み(interrupt)をかける方法をわかりやすく解説
Javaでは、interruptメソッドとInterruptedException例外を組み合わせることで、実行中のスレッドに割り込みをかけ、その処理を中断させることができます。以下のサンプルコードでは、実行中のスレッドが割り込みを受けると、catchブロック内で新たな例外が発生するため、処理が停止する様子を確認できます。サンプルコードpublic class Demo extends Thread { public void run() { try { Thread.sleep(150); Sys
-
Javaでユーザーから複数の値を1行で入力する方法
Javaでは、Scannerクラスを使用することで、ユーザーから1行に入力された複数の値を簡単に読み取ることができます。以下に、浮動小数点数と整数の2つの値を1行で入力するサンプルコードを示します。コード例import java.util.Scanner; public class Demo { public static void main(String[] args) { System.out.print(Enter two floating point values : ); Scanner my_scan = new Scanner(System
-
Javaの可変長引数(Varargs)におけるメソッドオーバーロードの曖昧性エラーとは?原因と回避策を解説
Javaで可変長引数(varargs)を使用する際には、メソッドの呼び出しが「あいまい(ambiguous)」になってしまうケースがあります。これは、渡された引数に対して、オーバーロードされた複数のメソッドがどちらも有効な呼び出し候補となり得るために起こる現象です。この場合、コンパイラはどちらのメソッドを呼び出すべきか判断できず、コンパイルエラーが発生します。 コード例 public class Demo { static void my_fun(double ... my_Val){ System.out.print(fun(double ...): + Numbe
-
Java 9のJShellでパッケージをインポートする方法
Java 9から導入された対話型ツール「JShell」では、起動時にあらかじめ10個のパッケージが自動的にインポートされています。そのため、よく使われるクラスであれば、import文を書かずにすぐに利用できるのが特徴です。 デフォルトでインポートされているパッケージを確認する JShellでデフォルト的に読み込まれているパッケージの一覧を表示するには、/importコマンドを使用します。 jshell> /import 実行結果 | import java.io.* | import java.math.* | import java.net.* | import
-
PerlとJavaの違いとは?特徴・文法・型システムを徹底比較
PerlとJavaはどちらも広く使われているプログラミング言語ですが、設計思想、実行方式、型システムなどにおいて大きく異なる特徴を持っています。本記事では、両言語の基本的な特徴や文法の違いを整理してわかりやすく解説します。 Javaの主な特徴 Javaはオブジェクト指向プログラミング言語であると同時に、独立したコンピューティングプラットフォームでもあります。 安全性が高く、高速かつ信頼性に優れている点が大きな強みです。 ソースコードはまずバイトコードに変換され、その後JVM(Java Virtual Machine)上で実行されます。 バイトコードに変換されたJavaプログラムは、「.cl
-
Javaのsplitメソッドを使ってマトリックス(行列)内の文字列を検索する方法
Javaのsplitメソッドを活用すると、マトリックス(行列)の中に特定の文字列が存在するかどうかを効率的に判定できます。この記事では、水平方向(行)だけでなく垂直方向(列)にも対応した文字列検索の実装例を紹介します。サンプルコードimport java.util.*; public class Demo { public static int search_string(String[] my_matrix, String search_string){ for (String input : my_matrix){ &nb
-
ScalaとJavaの違いを徹底比較!特徴・文法・設計思想までわかりやすく解説
ScalaとJavaは、どちらもJVM(Java仮想マシン)上で動作する人気の高いプログラミング言語です。両者は互換性がありながらも、設計思想や文法、開発スタイルにおいて大きく異なる点があります。本記事では、それぞれの言語の特徴を項目別に整理し、違いをわかりやすく解説します。 Scalaの主な特徴 関数型とオブジェクト指向の融合: Scalaは、関数型プログラミングとオブジェクト指向プログラミングの両方のパラダイムを組み合わせたハイブリッド言語です。 可読性の課題: 記述の自由度が高いため、コードの可読性が低くなりやすく、初学者にとっては学習難易度がやや高いと言われています。 コンパイル速
-
第n項が n² −(n−1)² となる数列の総和を求めるJavaプログラム
第n項が n² −(n−1)² で表される数列の総和を求める方法を解説します。まず数学的な仕組みを確認し、その後で実際に動作するJavaプログラムと実行結果を見ていきましょう。 数学的な背景:総和がn²になる理由 第n項が n² −(n−1)² である数列について、初項から第n項までの総和 S は次のように表せます。 S = (1² − 0²) + (2² − 1²) + (3² − 2²) + … + (n² −(n−1)²) 各カッコ内のマイナスの項と、直後のカッコ内のプラスの項が順に打ち消し合うため、このような級数は「望遠鏡和(テレスコーピング級数)」と呼ばれます。すべての項が消去された