JAVA関連のことを調べてみた

JAVA関連のことを調べてみた
目次

みかんの仕分け (paizaランク C 相当) Java解答例

# 問題文
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/mikan

# 解答例
“`java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int n = scanner.nextInt();
int m = scanner.nextInt();
for (int i = 0; i < m; i++) { int w = scanner.nextInt(); int result = w / n * n; if (result == 0) { result = n; } else if ((w - result) >= (result + n – w)) {
result += n;
}
System

元記事を表示

Fizz Buzz (paizaランク C 相当) Java解答例

# 問題文
https://paiza.jp/works/mondai/c_rank_skillcheck_sample/fizz-buzz

# 解答例
“`java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int n = scanner.nextInt();
for (int i = 1; i <= n; i++) { if (i % 3 == 0 && i % 5 == 0) { System.out.println("Fizz Buzz"); } else if (i % 3 == 0) { System.out.println("Fizz"); } else if (i % 5 == 0) { System.out.println("Buzz"); } else {

元記事を表示

【殿堂入りキャンペーン】残り物の量 (paizaランク C 相当) Java解答例

# 問題文
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/leftover

# 解答例
“`java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
float m = scanner.nextFloat();
float p = scanner.nextFloat();

float temp = m – (m * p / 100.0F);

float q = scanner.nextFloat();
System.out.println(temp – (temp * q / 100.0F));
}
}
}
“`

# 補足
– m, p, qは全て整数だが、最終的に実数の計算を行うため初めからfloatとして取得して計算している
– 当然in

元記事を表示

Javaで「直前の文字を繰り返す文字列にマッチするパターンを記述する」の動作を確認してみた

# 概要

Javaで「直前の文字を繰り返す文字列にマッチするパターンを記述する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index10.html

# 実装

以下のファイルを作成しました。
“`JSample10_1.java
import java.util.regex.*;

class JSample10_1{
public static void main(String[] args){
String regex = “Ha*n”;
Pattern p = Pattern.compile(regex);

Matcher m1 = p.matcher(“Hn”);
System.out.println(m1.find()); // true

Matcher m2 = p.matcher(“Han”);
System.out.println(m2.find()); // true

Matcher m3 = p.m

元記事を表示

Java Gold 例題 MessageFormat, ResourceBundle

以下のプロパティファイルがあります。
`MyResources_en_US.properties`
“`
message = Hello {0}. My name is {1}. I want to drink {2}. Can you tell me where I can buy it? thank you {3}.
“`
次のコードの`insert code`にどのコードを入れると、
次の出力結果が表示される選択肢はどれでしょうか。
“`java
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;

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

Object[] paramsUS = {
“Jhon”,
“Kate”,
“water”,
“see you again”
};

ResourceBu

元記事を表示

20分でわかる? JavaのInterfaceの基本

# サンプルコード
本記事ではゲームプログラムっぽいサンプルコードとともに、Interfaceそのもの・呼ばれる側・呼ぶ側の解説をする。Interfaceって何?という方向けの記事です。
## Interfaceファイル
メソッド(ふるまい)の定義を記載したファイル。
クラスではない。
“`ゲームプログラムっぽいもの①.java
/** プレイヤーがアクセス可能である。*/
public interface アクセス可能なもの{

/** アクセスされたときのふるまい。*/
public void アクセスする();
}
“`
上記の通り、メソッドの中身も空っぽでよく、
メソッドの定義(平たく言うと、呼び出し方)さえ書かれていればOK、というのがInterface。

乱暴に言うと、中身空っぽの定義ファイルである。
## Interfaceとして呼び出される側(Interfaceの実装クラス)
Interfaceは他のクラスに実装(Implement)されることで、使えるようになる。
“`ゲームプログラムっぽいもの②.java
public class 宝箱 i

元記事を表示

SpringAIで、テキストをエンベディングしてPineconeに登録してみたが。

## はじめに
SpringAIは、SpringBootを活用してAIアプリケーションを開発するためのフレームワークで、AIモデルプロバイダーや、ベクトルデータベースプロバイダーとの接続をサポートしている。この度は、OpenAIのモデルでテキストのエンベディングを行い、ベクトルデータベースPineconeに生成したベクトルの登録を確認した。
【参考】
https://docs.spring.io/spring-ai/reference/index.html

の情報では、プロパティファイルに接続情報を記載するのみで動作するはずだが、Embeddingがうまくできず、Javaのクラスに接続情報を記載した。

## 環境
* Windows11
* Java 17
* SpringAI 1.0.0-SNAPSHOT

## 事前に必要なもの
* PineconeのIndex
* エンドポイントのURL
* APIキー
* OpenAIのAPIキー

## 依存関係の追加
Mavenプロジェクトで実行しており、pom.xmlの依存関係には、次のものを追加した。
“`xml

元記事を表示

演算子(余り)&練習問題

# 演算子(余り)

%(余り、4%2→4を2で割ったあまりを求める)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680113/393db12b-327f-6cf4-4e90-7abc99814094.png)

# 練習問題

元記事を表示

Javaで「最長一致数量子、最短一致数量子、強欲な数量子の違い」の動作を確認してみた

# 概要

Javaで「最長一致数量子、最短一致数量子、強欲な数量子の違い」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index11.html

# 実装

以下のファイルを作成しました。
“`JSample11_1.java
import java.util.regex.*;

class JSample11_1{
public static void main(String[] args){
String regex = “AB+”;
Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(“ABBBC”);
if (m.find()){
System.out.println(m.group()); // ABBB
}
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample11_1.java
$ java JSample11_1

元記事を表示

Java gold 例題 Locale, DateTimeFormatter

次のコードで `/* insert code */`部分に入力すると下記の出力結果が得られるものはどれでしょうか

“`java
public class ParseTest {

public static void main(String[] args) {
Locale.setDefault(Locale.US);
var pattern = DateTimeFormatter.ofPattern(“yyyy MM dd”);
String Sdate = “2020 07 22”;
LocalDate date = LocalDate.parse(Sdate, pattern);

Locale[] locales = {
new Locale.Builder().setLanguage(“en”).setRegion(“US”).build(),
new Locale(“ja”, “JP”),
Locale.ITALY,
Locale.KOREA,
Locale.GERMANY
}

元記事を表示

【Python・Java】ABC365E の解説 PDF

# 問題文
https://atcoder.jp/contests/abc365/tasks/abc365_e

# 解説
こちらから解説 PDF をダウンロードできます。
https://github.com/NAVYSHUNTA/ABC365-E/blob/main/main.pdf

# 余談
当初は非公開でしたが、評判が良かったので公開しました。
理解を深める一助となれば幸いです。

元記事を表示

[備忘録 その13] Java Silver ~継承とポリモフィズム その2~

# 抽象クラス
オブジェクト指向プログラミングにおけるクラスの一種で、他のクラスが継承するための基盤を提供します。抽象クラスは、そのクラス自体では直接インスタンス化することはできませんが、サブクラスによって拡張され、具体的な実装が行われることを目的としています。

## 抽象クラスの特徴
1\. __インスタンス化できない__:抽象クラスは直接インスタンス化することができません。インスタンス化するには、そのクラスを継承した具体的なサブクラスを使う必要があります。
2\. __抽象メソッドを持つことができる__:抽象クラスは、抽象メソッドを含むことができます。抽象メソッドは、サブクラスで必ずオーバーライドしなければならないメソッドで、メソッド本体をもたず、宣言のみが行われます。
3\. __具体的なメソッドも持つことができる__:抽象クラスには、具体的な実装されたメソッドも含めることができます。サブクラスはこれらのメソッドをそのまま利用するか、必要に応じてオーバーライドすることができます。
4\. __ポリモーフィズムの基盤__:抽象クラスは、共通のインターフェースを提供することで、異な

元記事を表示

POIで作成するExcelが発生した不具合の調査記録

## 現象
最近javaシステムが作成したExcelを開くとエラーが発生すると報告されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/2bd9420f-4bcc-af17-9528-5a2286ea5ae5.png)
「はい」で修復したらファイルが開けますが、修復ログ情報が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/9bbcc04d-5415-4652-feef-5f21d9b95123.png)

“`xml

error101160_01.

元記事を表示

[paiza]遅いけど動くよ(十億連勝 (paizaランク S 相当)

# 動くけどダメダメ
やっとSランクに来たわいいけど、やっぱり難しいものね。
マジで納得がいかない出来だけど、とりあえず動くものが出来たので晒し上げようかと。

https://paiza.jp/works/mondai/real_event/continuous_winning

# 今回は2つの言語で書いたよ
いつもはJavaScriptで書いていたけど、今回はJava版も書いてみたよ!
理由としてはJavaScript版だと【入力例3】を実行するとメモリエラーで落ちてしまうという問題があったため、急遽同じようなコードをJavaで書いてみて動かしてみたって感じです。

## プログラムの概要
・ステージ分ループしてステージ内で起こり得る結果を生成
“`text:
[
[ ‘1’, ’01’, ‘001’, ‘000’ ], // ステージ1:x(負け),ox(勝ち負け),oox(勝勝負),ooo(勝勝勝)
[ ‘1’, ’01’, ’00’ ], // ステージ2:x(負),ox(勝負),oo(勝勝)
[ ‘1’, ’01’, ‘001’, ‘000’

元記事を表示

ルールエンジンの実践(1)

## なぜルールエンジンが必要か

ルールエンジンが必要とされる理由は以下の通りです:

1. ビジネスの俊敏性:
– ビジネスルールの変更が頻繁に発生する環境で、迅速な対応が可能になります。
– コードの再コンパイルや再デプロイなしでルールを更新できます。

2. 複雑性の管理:
– 大規模で複雑なルールセットを効率的に管理し、メンテナンスを容易にします。
– ルール間の依存関係や優先順位を自動的に処理します。

3. 非技術者によるルール管理:
– ビジネスアナリストや領域専門家が直接ルールを定義・管理できるようになります。
– 技術者とビジネス部門のコラボレーションが促進されます。

4. スケーラビリティと再利用性:
– ルールを再利用することで、開発時間とコストを削減できます。
– ビジネスの成長に合わせて、ルールセットを容易に拡張できます。

## ルールエンジンが解決する問題

ルールエンジンは、以下のような問題を解決するのに役立ちます:

1. 複雑な意思決定ロジックの管理:
– 多数の条件や例外を含む複雑なビジネ

元記事を表示

Javaで「文字列の先頭や末尾などの位置にマッチするパターンを記述する」の動作を確認してみた

# 概要

Javaで「文字列の先頭や末尾などの位置にマッチするパターンを記述する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index9.html

# 実装

以下のファイルを作成しました。
“`JSample9_1.java
import java.util.regex.*;

class JSample9_1{
public static void main(String[] args){
String regex = “^Red”;
Pattern p = Pattern.compile(regex);

Matcher m1 = p.matcher(“Red Table”);
System.out.println(m1.find()); // true

Matcher m2 = p.matcher(“Reduce speed”);
System.out.println(m2.find()); // true

Ma

元記事を表示

Spring Boot でマッピングされているURLの一覧を確認したい

対象環境:
– JAVA 11.0.24 (corretto-11)
– Spring Boot v2.3.12.RELEASE

https://qiita.com/otsu-Miya/items/eac37b2720b67a58690b
を参考に、対象環境にてマッピングをlogに表示してみた。

“`
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet

元記事を表示

Java gold 例題 ストリームAPI

次のコードの出力結果を答えてください
“`java

import java.util.HashMap;
import java.util.Map;

public class ComputeTest {
public static void main(String[] args) {
String[] tokens = {
“B”, “5”,
“B”, “4”,
“C”, “10”,
“A”, “8”
};

Map voteCounts = new HashMap<>();

for(int i = 0; i < tokens.length; i += 2) { String name = tokens[i]; int votes = Integer.parseInt(tokens[i + 1]); voteCounts.compute(name, (key, ol

元記事を表示

ERP 開発における Java と他の言語の比較: Java が優れている理由

ERP (エンタープライズ リソース プランニング) ソフトウェア開発の分野では、スケーラブルで効率的、かつ信頼性の高いシステムを作成するために、適切なプログラミング言語を選択することが重要です。利用可能な多くの言語の中で、ERP 開発には Java が好まれることがよくあります。この記事では、ERP システムのコンテキストで Java と他のプログラミング言語を比較し、その長所と優れている理由について説明します。

1. プラットフォームの独立性

Java の最も重要な利点の 1 つは、プラットフォームの独立性です。Java アプリケーションは、Java 仮想マシン (JVM) 上で実行されるバイトコードにコンパイルされるため、JVM がインストールされている任意のプラットフォームで同じコードを実行できます。この機能は、さまざまな環境で動作する必要があることが多い ERP システムにとって特に有益です。対照的に、C++ や C# などの言語では、プラットフォーム固有の調整が必要になる場合があり、導入と保守が複雑になります。

2. 堅牢性

Spring Bootのschedulingで定期実行を変幻自在にしてみた

## はじめに

システム開発に関わっていると、定期実行しているバッチを目にすることが多いと思います。
JP1で定期実行の設定をしたり、ECSでコンテナ化して定期実行の設定を入れるなど、様々な方法があります。

今回は、私がSpring FrameworkのTaskScheduler機能を採用して定期実行を実現した方法について紹介します。

具体的には以下のポイントを取り上げます。

– TaskSchedulerを採用した理由
– java.util.concurrent.ScheduledExecutorServiceを使わなかった理由
– どのように実現したのか

これらのポイントを通して、TaskSchedulerを使うことでどのようなメリットがあるのか、具体的な実装方法について解説していきます。

## 開発環境

– 言語:Java21
– フレームワーク:Spring Boot v3.1.4, Spring v6.0.12
– ビルドツール:gradle 8.5
– IDE:IntelliJ IDEA 2024.1.2

## 問題

### 定期実行を停止・再開の操作