JAVA関連のことを調べてみた2023年01月22日

JAVA関連のことを調べてみた2023年01月22日

ABC286A~Eの解答[Java]

## はじめに
今回もEまで解けたのでコンテスト中に提出したものを載せます。

では、見ていきましょう。

## A – Range Swap
問題文は[こちら](https://atcoder.jp/contests/abc286/tasks/abc286_a)

for文を5つ書いてそれぞれの区間を出力しました。
“`A.java
class Main{

static final boolean autoFlush = false;
static final Library System = new Library(java.lang.System.in,java.lang.System.out,java.lang.System.err,autoFlush);

public static void main(String[] args){

//各値の受け取り
int N = System.in.nextInt();
int P = System.in.nextInt();
int Q = System.in.nextInt();
int R

元記事を表示

targetSdkVersionを31にするときの3つの注意点

2022年11月から、GooglePlayストアにアプリのアップデートを公開する場合、targetSdkVersionを31にしないと公開できなくなりました。

機能を追加したし、あとはtargetSdkVersionを上げるだけ・・・
ってビルドできない!動かない!

という事に今回遭遇したので、targetSdkVersionを31にした時の注意点3選を書いていきたいと思います。

# 1.Android 12端末でアプリ起動時のIllegalArgumentExceptionに対応する
Android 12端末で起動しようとすると以下のエラーが吐かれてアプリ落ちします。
Android 11以前であれば普通に起動します。
“`
Fatal Exception: java.lang.IllegalArgumentException: com.highcom.todolog: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified whe

元記事を表示

[Java]依存性の注入(Dependency Injection)の理解が曖昧な方への説明

### はじめに
この記事は依存性の注入の概念に集中するため、
なぜ依存性の注入を使うのかメリットは何かは詳しく説明しないです。

### 依存性の注入(Dependency Injection)とは?
#### 定義
依存性の注入(Dependency Injection)、もしくは依存性注入、依存注入、DIと呼ばれています。
[Wikipedia](https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5)により、依存性の注入とはあるオブジェクトや関数が、
依存する他のオブジェクトや関数を受け取るデザインパターンであると書いてありますが、
なかなか理解しづらいですね、、、
#### 具体的な例
それでは現実の物を使って理解しましょう。
例えば、車はエンジンがないと動けないので、この時に車はエンジンに依存すると言えるでしょう。
(エンジンは車の依存)
こういう関係は依存性と言います。これだけです。

### 依存性の注入を使わない場合
車(Car)とエンジン(Engine)

元記事を表示

Android 非公開APIの見分け方

# 非公開APIとは
AndroidにはAPIの種類があります。
殆どの方が使用するのは、publicAPI(AndroidStudioで開発する際誰もが使用できるAPI)だと思います。
[Android Code Serarch UserHandle#myUserId()](https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/os/UserHandle.java;l=551?q=UserHandle.java)を見てみるとMethodの上に@SystemApiや@hideやらついています。

これらのAPIは普段3rdParty(GooglePlayからインストールするようなApp)では使用できないAPIになります。
じゃなぜこれの説明をするのって??
日々の業務の中でPre-inAppを作成しており、そのAppを配信化する事になりました。

しかし!!先ほど説明した非公開API(@SysteApiや@hideがついているMethod)は使用しな

元記事を表示

AndroidアプリでOpenCVを利用しようとした際のGradle Syncエラー対策

# はじめに
Android Application(Java)上でOpenCVを取り込んで動かそうとした際に引っかかったこととその対処のメモです。
ほとんど自分用に備忘録になります。
OpenCV SDKのバージョン:4.7.0

# OpenCVの取り込み
Android StudioへのOpenCVの取り込みはすでに分かりやすくい記載されている方がいるので以下を参照

https://qiita.com/tifa2chan/items/a2ec4f5d90eeb9cf1802

# GradleのSync error
参考ページのOpenCVの取り込みを実施し、openCVでモジュール名を設定しFinishしたところGradleのsyncで以下のエラーが発生
“`
Plugin with id ‘kotlin-android’ not found
“`

# 対応策
対処方法について調べていたところ以下に対策の記載があった

https://coskxlabsite.stars.ne.jp/html/android/OpenCVpreview/OpenCVpreview_A.

元記事を表示

Spigotサーバーで動くカスタムクラフターを作りました

# カスタムクラフターとは
新しいクラフトレシピを追加するプラグインです。
バニラのクラフトは3*3スロットですが、このプラグインは6*6スロットのレシピまで対応しています。

# 処理の流れ
– プレイヤーが作業台をクリックしたら、作業台の下3*3のブロックがコンフィグファイルで指定されているブロックと一致するか調べる。
– クラフトボタンをクリックしたら、配置されたアイテムを処理機構にぶち込んで完成品を検索する。
– 終わり

# 処理機構とは
処理の流れ2つ目の「処理機構」の中身をあれこれと書いていきます。
出来ればここ(↓)

https://github.com/Sakaki-Aruka/custom-crafter/tree/master/src/main/java/com/github/sakakiaruka/cutomcrafter/customcrafter/listeners/clickInventorysMethods

にあるSearch.java と SearchVanilla.java を見ながら読み進めてください。

## 処理の種類
クリックの種類

元記事を表示

データの入れ替え・退避変数・多重代入

# これは何?

https://qiita.com/nodai2h_ITC/items/6c7b7ad029adf17da5f0#%E9%80%80%E9%81%BF%E5%A4%89%E6%95%B0%E3%81%AF%E5%BF%85%E8%A6%81%E3%81%98%E3%82%83%E3%81%AA%E3%81%84

で退避変数が必要だと教科書に書いてあるとか、そのあたりが面白かったので調べた。

# 多重代入での入れ替え

Python, Go, Ruby なんかは多重代入がある。

配列の要素を入れ替えるのであれば

“`python:python,go,ruby
a[i], a[j] = a[j], a[i]
“`

のように書ける。

引用元の記事では

> もちろん、パフォーマンスを考えると多重代入より退避変数を使ったほうがいいでしょう。

となっているが、手元で試したところ、ruby 以外は速度差を観測できなかった。

ruby は多重代入のほうがはっきりと遅かった。さすが。

多重代入で書いたほうが速いケースもありそうだと思っているが、そういうパターンは

元記事を表示

【webアプリ・Java・jsp/servlet】index.jsp

## webアプリ作成で詰まった!

#### 人生で2度目となるwebアプリ作成
イチから全てを作成するのが2度目になるのですがほとんど1度目と言って良いくらい**何もかも**忘れていました。
#### 【問題】CSSのレイアウトが反映されない!!
—環境—
webアプリ作成環境としては
・Eclipse
・java11
・jsp/servlet
・Apache(アプリケーションサーバ)

サーバーサイドのコーディングをしている時はアプリケーションは一見正常に作動しているように見えたのですが、サーバーサイドのコーディングがひと段落ついたのでフロント部分をコーディングし、作動してみるとcssが全く反映されませんでした。
。。。。

#### 気づくのに2日(作業8時間)
正直諦めかけました。色々と試行錯誤する上でなんとか辿り着きました。

### ウェルカムページの設定が間違っていた。
ウェルカムページとはTopServletなど最初のページに指定しているURLパターン(リンクみたいな)の事を言います。
https://www.yahoo.co.jp/
上記のyahooのtop

元記事を表示

No property {Column} found for type {Entity}エラーが出て、@Queryを使ってみた

以下のコードでは、Person EntityにPersonを保存して誕生日の月データが”8月”の人を検索しています。

“`java:PersonRepositoryTest.java
@Test
void findByBirthdayBetween() {
givenPerson(“martin”,10,”A”,LocalDate.of(1991,8,15));
givenPerson(“david”,9,”B”,LocalDate.of(1992,7,1));
givenPerson(“dennis”,8,”O”,LocalDate.of(1993,1,5));
givenPerson(“sophia”,7,”AB”,LocalDate.of(1994,6,30));
givenPerson(“benny”,6,”A”,LocalDate.of(1995,8,30));

List result = personRepository.findB

元記事を表示

確実に動くGWT開発環境を作る

2023年1月 windows10 で開発できる環境を用意

・GWT(旧Google Web Toolkit)は情報は多いものの、古かったり、動かない事例が紹介されており、苦労した挙句に開発環境が作れない状態です。
 そこで、かなり初期から開発しているワイですが、確実に動く、GWT開発環境をzipファイル化して、作成手順をまとめましたので、ご利用ください。

■Eclipse 4.6 + GWT プラグイン
https://drive.google.com/file/d/1-IaQOlnH1IsYzSbBbHO7_pzST4hbJq4L/view?usp=sharing
(*)ちょい古いですが、動作確認しています。

■セットアップ方法
(1)ダウンロードする
(2)ファイルを解凍
(3)回答したフォルダの中のpleiades-4.6をCドライブ直下へ移動
  (*)GWTの設定がCから基準になっているので
  C:\pleiades-4.6\pleiades\eclipse
  こんな感じになっていればよい
![image.png](https://qiita-image-stor

元記事を表示

rJavaのロード時のエラーへの対処

注) Windowsでの対処法を記載しています。Macとは手順が異なる場合があるので注意してください。

RでJavaを動かせる**rJava**というパッケージがあります。テキストデータの処理などで使うことがありました。便利なパッケージですが、エラーメッセージが出て使えないという話をよく頂きます。今回は、その対象法について説明します。

# エラーについて
インストールを行ったあとに、libraryでrJavaをロードします。
“`r
# install.packages(‘rJava’)
library(rJava)
“`
しかし、以下のエラーメッセージが表示される場合があります。使っているOSでエラーメッセージが違うみたいですね。
– Windows
“`
Error: package or namespace load failed for ‘rJava’: .onLoad は loadNamespace()(’rJava’ に対する)の中で失敗しました、詳細は: call: fun(libname, pkgname) error: JAVA_HOME c

元記事を表示

Java Timeで月末日を取得する

# TL; DR

`java.time.temporal.TemporalAdjusters.lastDayOfMonth()` を使う。

# 実証コード 

“`java
// Java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;

public class Test {
public static void main(String[] args) {
LocalDate date1 = LocalDate.of(2023, 2, 15);
LocalDate date2 = LocalDate.of(2024, 2, 15);

System.out.println(date1.with(lastDayOfMonth()).format(DateTimeFormatter.ISO_LOCAL

元記事を表示

Calendarクラスで、今日、明日、明後日、昨日、一昨日、来年、昨年の日付を取得する

## 目次
 [1.DateクラスとCalendarクラスのちがい](#1-DateクラスとCalendarクラスのちがい)
 [2.今日、明日、明後日、昨日、一昨日、来年、昨年の日付を取得する](#2-今日明日明後日昨日一昨日来年昨年の日付を取得する)

## 1. DateクラスとCalendarクラスのちがい
### Dateクラス
簡単に日付を表示したい場合などに使用。
現在は非推奨のため基本的にCalendarクラスを使用するのが望ましい。

“`java
package jp.co.study.sample;

import java.util.Date;

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

Date date = new Date();
System.out.println(date.toString());
}
}
“`
出力結果は、Thu Jan 19 19:07:48 JST 2023

下記のようにすると、フォーマットを指定できる。
“`java
p

元記事を表示

JAVA バージョン変更 Mac

## はじめに
今回は、Javanoバージョン変更方法について書いていきます。簡単です。
PCはMacです。今回はJava19.0.1をJava17.0.5に変更します。

## 現在のJavaのバージョンを確認していく

まず、現在のJavaのバージョンを確認していきます。
“`
~ % java -version
java version “19.0.1” 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)
“`

このコマンドで、現在のJavaのバージョンは19.0.1であるとわかります。

## インストールされているJavaのバージョンを確認する
次は、変更するJavaのバージョン17.0.5がインストールされているか確認します。

“`
~ % /usr/libexec/java_home -V
Matching Java Virtual

元記事を表示

Javaで無料のタイムスタンプサービスに接続する

## タイムスタンプサービス

無料でタイムスタンプトークンを発行するサービス、[Free TSA Project](http://eswg.jnsa.org/sandbox/freetsa/) に接続します。

## タイムスタンププロトコル

タイムスタンプに関わる仕様は、[RFC3161](https://datatracker.ietf.org/doc/html/rfc3161)、[RFC5816](https://datatracker.ietf.org/doc/html/rfc5816) で 定義されています。

HTTP通信で行う際の仕様が [RFC3161 の 3.4 Time-Stamp Protocol via HTTP](https://datatracker.ietf.org/doc/html/rfc3161#section-3.4) に記載されています。

## タイムスタンプサービスへの接続

今回は、[HttpClientクラス](https://docs.oracle.com/javase/jp/17/docs/api/java.net.http/jav

元記事を表示

String.formatの使い方まとめ

文字列を実装する中で文字列操作をする際にString.formatで実装する機会があったので備忘録。

String, Int, Doubleをそれぞれ使うように作成。
サンプルのユーザーデータは以下

“`kotlin
data class User(
// ニックネーム
val nickname: String = “”,
// 年齢
val age: Int = 0,
// 身長(cm)
val height: Int = 0,
// 足のサイズ(cm)
val shoeSize: Double = 0.0,
)

“`

実際の表示確認は以下

“`kotlin

fun main(args: Array) {
val jack = User(nickname = “ジャック”, age = 27, height = 172, shoeSize= 26.5)

print(String.format(“ニックネーム:%s”, jack.nickname))

元記事を表示

JavaSilver対策〜3秒で解ける問題〜

「JavaSilver」の対策記事となります。

JavaSilverの問題ですが、実は中には問題文もしくは選択肢を見れば速攻で解くことができる問題があります。

本来であればしっかりと理解した上で解くのが良いのですが、正直いくつかのポイントを暗記さえしていれば考えなくとも簡単に解けてしまうものです。

今回はふ〜んくらいの心づもりでこの記事を見ていただければと思います。
では、実際に一つ一つ見ていきましょう!

目次

[1. varによる変数宣言](#varによる変数宣言)
 - [例題1-1](#例題1_1)
 - [例題1-2](#例題1_2)
 - [例題1-3](#例題1_3)
[2. StringクラスとStringBuilderクラスのメソッド](#stringクラスとstringbuilderクラスのメソッド)
 - [例題2-1](#例題2_1)
 - [例題2-2](#例題2_2)
[3. Switch文](#switch文)
 - [例題3-1](#例題3_1)
 - [例題3-2](#例題3_2)

varによる変数宣言

元記事を表示

JavaSilver対策〜nullを極めよう〜

私自身、紫本・白本・黒本と合計1500ページも色々な問題を解いてきたわけですが、後半は正直かなり傾向がわかってきました。というのも、問題文とか答えの選択肢を見ただけで何を引っ掛けようとしている問題なのか大体わかるようになってきます。「これはオーバーライド問題だな」とか「これは抽象メソッド問題だな」「これはnullの理解を聞いてるな」などです。

そこで当初個人的に苦手だった部分や私と同じようにプログラミング初心者の引っかかりそうなところを抽出して紹介していきます。

今回の内容を理解しておけばもったいないところで点数を落とさなくて済むようになるので点数アップも期待できると思います。

それでは早速本題に入っていきましょう!

目次

[1. フィールドの初期値](#フィールドの初期値)
[2. 配列型の出力](#配列型の出力)
 - [要素指定なし-ハッシュ値の出力-](#要素指定なし-ハッシュ値の出力-)
 - [要素指定あり](#要素指定あり)
 - [要素数の確認](#要素数の確認)
 - [明示的なnullの代入](#明示的なnullの代入)
[3. 最後

元記事を表示

はじめてのMac Java環境構築

目次

[1. 今回使用したもの](#1-今回使用したもの)
2. [Homebrew](#rink2)
3. [JDK](#rink3)
3-1. [環境変数JAVA_HOMEの設定](#rink4)
3-2. [環境変数PATHの設定](#rink5)
4. [Tomcat](#rink6)
5. [MySQL](#rink7)
5-1. [PATHの設定](#rink8)
5-2. [バージョン変更時のエラー](#rink9)
5-3. [エラー解決](#rink10)
6. [Git](#rink11)
7. [エディタ](#rink12)
7-1. [Visual Studio Code](#rink13)
7-2. [Eclipse](#rink14)
7-3. [IntelliJ IDEA](#rink15)

1.今回使用したもの

OS

・MacOS Monterey-バージョン12.4-(M1 Mac)

Java

・openJDK17.0.3

エディタ

・Visual Studi

元記事を表示

java try-catch-finallyのreturnについて

***javaのtry-catch-finallyのreturnについて***

javaのtry-catch-finallyのreturnについて意外と見落としがちな部分について記事にしていきます。
このようなtry-catch-finallyがあったとします。![スクリーンショット 2023-01-18 7.13.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3087483/09cda797-a396-605a-4516-836b1a6c7417.png)
上記のコードは実行結果は***100***になります。
理由としてはtry文の15行目でRuntimeExceptionが発生してそれをcatch文で受け取りnumに100を代入してrerurnでnumを返してからfinallyでnum+=100されているからです。
***この時に24行目のreturn文は処理されずにtry-catch-finallyをそのまま抜けます。***

—-
考え方としては

try
↓例外発生した
catc

元記事を表示

OTHERカテゴリの最新記事