JAVA関連のことを調べてみた2020年11月17日

JAVA関連のことを調べてみた2020年11月17日
目次

【Java】値/文字列を比較(AOJ14 – カードゲーム)

#値や文字列を比較
* **compareToメソッド**
* 戻り値はメソッドの呼び出し元の値(変数1) – 引数の値(変数2)
* 左の値 – 右の値=正: 1
* 左の値 – 右の値=負: -1
* 左の値 – 右の値=0:0
* 日時も比較可能
* **compareToIgnoreCaseメソッド**:文字列の大文字と小文字を区別しない

“`java
import java.util.Date;
public class Main {

public static void main(String[] args) {

String str1 = “a”;
String str2 = “b”;
String str3 = “A”;
Date date1 = new Date(2017, 3, 28, 16, 20, 22);
Date date2 = new Date(2017, 3, 29, 16, 20, 24);

System.out.println(str1.compareTo(str2)); //-1

元記事を表示

JDBI3でInputStreamをBindしたい時

## JDBI2ではできたのに

“`java
@SqlUpdate(“update samples set file = :file where flag = true”)
int updateFile(@Bind(“file”) InputStream file);
“`

“`kotlin
@SqlUpdate(“update samples set file = :file where flag = true”)
fun updateFile(@Bind(“file”) file: InputStream?): Int
“`

JDBI3ではできなくなっている…

“`
org.jdbi.v3.core.statement.UnableToCreateStatementException: No argument factory registered for type …
“`
のようなエラーが出てくる

GitHubでエラーメッセージを検索したところ、↓が怪しい

“`java
return new UnableToCreateStatementExce

元記事を表示

FitGen.exeを日本語Windowsで実行したとき発生するJavaのエンコーディングに関するエラーを回避する

## TL;DR
環境変数の `JAVA_TOOL_OPTIONS` に `-Dfile.encoding=UTF-8` を設定する。

![環境変数_JAVA_TOOL_OPTIONS.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594488/0de2abfb-b41a-c959-5ec6-905519c52203.png)

## 詳細
GARMIN FIT SDKでカスタムメッセージ等を定義した場合、FitGen.exeを実行しFIT SDKを生成する必要がある。
https://developer.garmin.com/fit/cookbook/fitgen/

しかし、最近Garmin Developersで配布されているFIT SDKのEventMesg.javaのドキュメントコメントに謎の文字化けが混入しておりそのままFitGen.exeを実行すると

“`
> .\FitGen.exe -o test -java
FIT Code Generator – Protocol 2.00

元記事を表示

Selenium

#Selenium
UIベースでの単体テストの方法

###メインソース
“`java
package G_T.OfficeSystem.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumTest {
public static void main(String[] args) {
SeleniumTest doTest = new SeleniumTest();
doTest.threadTest();
}
void threadTest() {
ExecutorService pool

元記事を表示

Spring Frameworkが分からない奴はこれを買え!!!!!!

はじめに

皆さんJavaの教本と言えばなんでしょうか?色々あると思いますが一番おすすめできるのは「スッキリわかるJava入門」と多くの人が答えると思います。
じゃあ一通りやった後にJavaのフレームワークを触ってみましょうとなった際や、

元記事を表示

【Java】FileReaderクラスとBufferedReaderクラスの使い方

#プログラミング勉強日記
2020年11月16日
FileReaderクラスとBufferedReaderクラスの使い方を改めてまとめておく。

#FileReaderクラスとは
 テキストファイルを読み込むためのAPIで、テキストファイルの内容を元にした処理などを行うために使う。ファイルの文字は、データを文字単位で読み書きできる文字のストリームで読み込まれる。FileReaderクラスは文字を読み込むメソッドとしては、1文字ずつ読み込むreadメソッドしか用意がないので、データをバイト単位で読み書きできるバイトのストリームで読みたい場合はFileInputStreamクラスを使用する。

“`java:readメソッドで1文字ずつ読み込む
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {

public static void main(String[] args) {
try {
//

元記事を表示

Memento Pattern

特定のクラスの状態を複製するクラスを用意してMementoとする。userは複製を作成したときにMementoをインスタンス化してコレクションに記録し、必要に応じてインスタンスを取り出す
Mementoは複製するメンバを保持する

[Design Pattarm MENU](https://qiita.com/old_cat/items/852d980bedb9100dd7e3)

以下のクラス構成で確認します

|クラス|説明|
|—–|—-|
|Origin.class|複製対象のクラス|
|Memento.class|Originを複製する場合に、MementoにOriginのデータを複製し、Mementoを保存する|
|MementoList.class|コレクション(ListやMapなど)を保持し、Mementoインスタンスを格納する|
|user(Main.class)|動作を確認する|

*user 他の開発者がこのパターンを利用する、という意味合いを含みます

“`java:Origin.clas

元記事を表示

【スタージュンも認めた】グルメスパイザー欲しいけど1103兆3543億円もするのでandroidアプリ作った

#お断り
主はandroidアプリ開発、java言語が今回が初めてなのでレイアウトがボロボロだったり所々突っ込みどころがあると思います。
ネタが嫌いな方はブラウザバック推奨します















#対象読者
・1103兆3543億円もってない人
・手軽に菓子粉砕したい人
・美食家
・スタージュン
・どこでもポン!クラッシュ!クラッシュ!パッパッパ!したい人

#動画:説明あり
https://www.nicovideo.jp/watch/sm37827489

#ダウンロード、インストール
[download](https://drive.google.com/file/d/1zTXXf9WIIxnNxQu49Hh4a014GTYuFWPK/view?usp=sharing)

野良アプリになるので[gumbyさん](https://qiita.com/gumby/items/9e1431b73bdb6b0684d8)の記事参

元記事を表示

Optionalを使ったnull/空文字判定2.0

結局if文使うなら、いっそOptionalは一切使わないほうがいいよなって思ったりした。null/空文字判定をOptionalで進化させたい。

なお、以下断りがなければJava1.8以上で動作する想定です。

# きっかけ
最近、文字列の「存在チェック」を行うコードでこんなのを発見して、かなり違和感があった :thinking:

“`java
String uri = SystemPropertiesUtil.getPropertyOptional(Constant.URI).orElse(“”);

if (StringUtils.isEmpty(dkInfoGetApiUrl)) {
// nullならなんかやる
}
“`

DBからAPIのURIを取得してきて、APIコールに使う場面です。 `getPropertyOptional` はOptionalを返すメソッド。
また、if文に登場する `StringUtils#isEmpty` はSpring Frameworkが提供しているユーティリティメソッド。

これなら普通にnull/空文字判定をすればよくて、Optio

元記事を表示

備忘録No.6「文字列として受け取った1桁の和差の式を計算する」[Java]

#はじめに
初めてgetNumericValueメソッドを使用したので、記録。

#やりたい事
・長さ自由の文字列で計算式を受け取る(使われる数字は全て1桁、演算子は’+’と’-‘のみ)
・受け取った文字列を数値にして計算
・計算結果を出力する

(例)
入力:”1+2+3″
出力:6

#コード
“`java
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
sc.close();
char [] c = line.toCharArray();

int sum = 0;
boolean add = true;

for(int i = 0; i < line.length(); i++) { if(i % 2 == 0) {//数値と演算子が交互に来るため、偶数は数値の計算,奇数は演算子の入れ替えを行う if(add) {

元記事を表示

【Java】部分文字列を抜き出す(AOJ13 – シャッフル)

#文字列から部分文字列を抜き出す
* Stringクラスのsubstringメソッド
* 第一引数に抜き出し開始の位置を設定

“`java
public class Main {
public static void main(String[] args) {
String str = “ねこはなんでこんなにMOFUいんでしょうか”;
//10~14文字目まで抜き出す
String mofu= str.substring(10,15);
//山崎を表示
System.out.println(mofu); //MOFUい
}
}
“`
#シャッフル(ITP1-9)
>1つのアルファベットが描かれた n 枚のカードの山をシャッフルします。
1回のシャッフルでは、下から h 枚のカードをまとめて取り出し、それを残ったカードの山の上に積み上げます。
カードの山は以下のように1つの文字列で与えられます。
abcdeefab
最初の文字が一番下にあるカード、最後の文字が一番上にあるカードを示しています。
例えば、これを h が 4 でシャッフ

元記事を表示

【Java】部分文字列/要素を検索(AOJ12 – リング)

AIZU ONLINE JUDGE の教材を使って勉強していきます
行いたい操作や文法をまとめ、
実際にその文法を使ってAOJを解答した例を載せています

#indexOfで部分文字列を検索
* **indexOfメソッド**
* 文字列に含まれる部分文字列を検索
* ヒット場合は、文字列のインデックス番号を返す(先頭0)
* **lastIndexOfメソッド**は文字列の後ろから検索
* 最初に見つかった位置のインデックスを返す

“`java

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

String str1 = “Penpineappleapplepen”;
String str2 = “pineapple”;

int result = str1.indexOf(str2);

if (result != -1) {
System.out.println(str2 + “発見!”);
System.out.println(str2 +

元記事を表示

【Java】文字判定・文字列整形(AOJ11 – 文字のカウント)

#アルファベットの小文字かどうか判定
* ASCIIコード表で’a’から’z’は連続している
* ‘b’の値は’a’の値よりも1大きい
* c がアルファベットの小文字なら真になるコードを書くには
`c >= ‘a’ && c <= ‘z’` ```java //c がアルファベットの小文字なら真になるコード public class Main { public static void main(String[] args){ char c = 'c'; System.out.printf("確認したい文字cは? '%s'\n", c); /*cがアルファベットの小文字なら真*/ if (c >= ‘a’ && c <= 'z') System.out.println("c は小文字"); /*cが英小文字なら真*/ if (c >= ‘a’ && c <= 'z') System.out.println("c は小文字"); else

元記事を表示

Javaのプリミティブ特殊化まとめ

# 前置き

Java SE8の関数型インタフェースやStreamのプリミティブ特殊化についてまとめました。
目的はJava Gold試験対策です。

# プリミティブ特殊化とは

javaでは、Function\のR apply(T t) のT,Rのような型引数にはプリミティブを与えることができない。関数型インタフェースやStreamにおいては、int、long、doubleについても(ラッパークラスにボクシングせずに)ジェネリクスっぽく操作ができるように、個別にクラスがいくつか定義されている。これをプリミティブ特殊化を行った型という。
intだけ覚えておけばlong, doubleも差異は無い。

# 関数型インターフェイスの整理

## [java.util.function][1]の全関数型インタフェース
| 基本のクラス名 | intへの特殊化 | longへの特殊化 | doubleへの特殊化 | 基本のメソッド名 |
| —————– | –

元記事を表示

配列変数 と 連想配列 初学者が初学者向けにまとめた

どうも。
今まで掲示板等々を学習がてら作成してきましたが、5ヶ月というスパンで焦り走りしてきた事で
「フワッとした理解」で「〇〇機能は〇〇で実装できるだろう」と何となく分かるものの、Google先生の力がなければこれ一つ自分で実装できない僕が、
一つ一つの細かな理解が疎かであることから、
これから基礎の基礎を深く理解するためにアウトプットの場としてQiitaに投稿していきます。

自身でGoogle先生を活用して数十サイトや書籍を参考に理解を深めながら、
1、、実際にコードを書いて
2、、ノートに自分の言葉でいつかの自分が見ても伝わるようにまとめていく
3、、最後にQiitaに他の方が見ても分かるよう伝えていく

※間違い部分、誤解している箇所が出てくる可能性もあります。

[配列とは]

複数(プロパティ)のデータをまとめて整理して1つの大きな箱にいれるイメージ。
![333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677104/701939f0-44ad-f6f9-17f6

元記事を表示

【Java】暗黙的型キャスト(AOJ10 – 数字の和)

#型キャスト
* **char型は暗黙的にint型やdouble型にキャストできる**
* char型のラッパークラスCharacter型はUnicode文字表現
* ”1”の場合U+0031(16進法)49(10進法)
* char型の”1”が暗黙的にint型にキャストされた場合”49”が出力される
* 参考にさせていただきました
* [Why we use -‘0’ beside charAt(i)?](https://stackoverflow.com/questions/12438336/why-we-use-0-beside-charati)
* [【Java】char型はint型にキャストできる](https://qiita.com/nkojima/items/d358f99efa71655911ea) @nkojimaさま記事

“`java
public class Main {
public static void main(String[] args) {

char c = ‘1’;
//暗黙的にint

元記事を表示

【Java】文字列を大文字/小文字へ変換(AOJ⑨ – 大文字と小文字の入れ替え)

#大文字/小文字の変換
* 文字列を大文字/小文字へ変換
* **toUpperCase, toLowerCaseメソッド**
* 大文字/小文字かどうかを判別
* **isUpperCase. isLowerCaseメソッド**

“`java
public class Main {
public static void main(String[] args){
String str1 = new String(“MoHuNeKo”);
String upper_str1 = str1.toUpperCase();
String lower_str1 = str1.toLowerCase();

System.out.println(“入力文字列 : ” + str1);
System.out.println(“1文字目は大文字? : ” + Character.isUpperCase(str1.charAt(0)));
System.out.println(“大文字変換 : ” + upper_str1);

元記事を表示

[Spring Framework]Configurationの分割

# Configurationの分割
肥大化したJava Configを分割する方法です。

## Java Configの分割

### メインクラス
分割したサブクラスを`@org.springframework.context.annotation.Import`で読み込む。

“`java:AppConfig.java
@Configuration
@Import({SubConfig.class, Sub2Config.class})
public class AppConfig {
// subConfig.class, sub2Config.classに定義したBeanがインジェクションされる
}
“`

### 分割したサブクラス
`@Configuration`をつける

“`java:SubConfig.java
@Configuration
public class SubConfig {
@Bean
UserService userService() {
// ・・・
}
}
“`
“`java:Sub2Config.java
@C

元記事を表示

【Java】多次元配列・内積計算(AOJ⑦内積)

#多次元配列

“`java
// 3*4*5の三次元配列
init [][][] list = new int [3][4][5];
// 2次元配列を初期化して宣言
int [][] list = [
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },
};
//var で初期化して宣言
var list = new int[][] [
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },
};
// 0行1列目にアクセス
System.out.println(list[0][1]); //2
“`

#ジャグ配列
* 長さが異なる多次元配列
* 最初の宣言では外側のサイズのみ指定
* 1次元目は確保しないといけないが2次元目は確保不要
* **2次元以降はダイナミックに変更できる!**
* ユースケース
* 全人口の給料の配列を作るときに都道府県ごとに作成
* `int [][] = salary = new int[47][];`

“`java
var list = ne

元記事を表示

【Java】データ型・行列の積(AOJ⑧行列の積)

#データ型(データの種類)
* データの**種類と大きさにあったデータ型**を使う
* **byte, char**:バイトデータを格納する
* **short**:小さな整数を表す
* **long**:intで対応できない数値範囲を扱う場合のみ
* 参考:
[【Java】データ型①-基本型](https://qiita.com/suema0331/items/5095f79e540967c2a407#java%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B)

“`java
public class Main {
public static void main(String[] args){
//int型の最小値と最大値を確認する
System.out.println(“int 最小/最大値= ” + Integer.MIN_VALUE+” ~ “+Integer.MAX_VALUE);
System.out.println(“byte 最小/最大値=

元記事を表示

OTHERカテゴリの最新記事