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

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

Leetcode 374. Guess Number Higher or Lower

# 374. Guess Number Higher or Lower

https://leetcode.com/problems/guess-number-higher-or-lower/description/

## アプローチ
### 二分探索
O(log n)

“`java
/**
* Forward declaration of guess API.
* @param num your guess
* @return -1 if num is higher than the picked number
* 1 if num is lower than the picked number
* otherwise return 0
* int guess(int num);
*/

public class Solution extends GuessGame {
public int guessNumber(int n) {
int start = 1;

元記事を表示

GraalVMのインストールで実行したことのメモ

JavaをDockerやLambdaなどコンテナサーバレス環境でJavaを使うにあたって新しいランタイムを試したかったので環境設定をメモする。

GraalVMの情報については以下からダウンロードを実行する。
英語だけど基本的にインストール方法などは全部乗ってる。
[https://www.graalvm.org/22.1/docs/getting-started/windows/](https://www.graalvm.org/22.1/docs/getting-started/windows/)

解凍後以下場所にダウンロードしたファイルを配置する。

※以降はgraalvm-ce-java19の場合

C:\Program Files\Java\graalvm-ce-java19-22.3.0

## IntellJでの設定(Windows場合)

プロジェクト構造を選択

![figure1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89244/24043dea-7169-3565-51

元記事を表示

Javaで何か作ってみる(2022/11/15 Day26)

## 今日やった事
– Javaの動画教材の演習問題である、Jihanプログラムの作成を行った。
→コミットした内容は[こちら](https://github.com/takamatsuryota3/Java/commit/debd8725465fdbfadf83c547f16ce5576f07d72f)
## 参考にしたもの
– [【超絶丁寧解説】Javaプログラミングをゼロから学ぶ!絶対挫折させない「基礎入門」講座【講師評価4.3】](https://www.udemy.com/course/uz-java-kiso/)
→今回取り組んだのは、この動画教材の中の、**J1-EX1_総合演習(アルゴリズム)** の**総合演習(Jihanプログラムの作成)** になる。
– [[Java]Integer.parseIntメソッドの使い方とは?parseIntメソッドやparseUnsignedIntメソッドの使い方・例外の発生するケース・配列の変換Javaコラム](https://www.fenet.jp/java/column/java_tips/664

元記事を表示

重大: サーブレット [action] のServlet.service()が例外を投げました

疲れた

数時間ハマった。

Strtusで突然このエラーが発生して
Actionが呼び出されなくなった。

なぜかわからなくて調べ始めたけど、なかなかわからない。
検索してもactionがservlet.service()のエラーは見つからない。
jspはあるのだけど。

このエラーは、これしかエラーログが出ないので、
何が原因で起こっているのか全く分からない。

原因は、ActionFormで
送信する時、

List xxx;
とするのが定番だけど、

試しに
Integer[] xxx;
にしてみたせいだった。

作っていたコードがArrayの方が都合がよかったので、
これで動くか試していたのだけど、

色々やっているうちに変更したことを忘れていた。

もう忘れないように書き残しておこう

元記事を表示

Leetcode 540. Single Element in a Sorted Array

# 540. Single Element in a Sorted Array

https://leetcode.com/problems/single-element-in-a-sorted-array/description/

## アプローチ
### Hashmap

“`java
class Solution {
public int singleNonDuplicate(int[] nums) {
if(nums == null || nums.length == 0){
return 0;
}
HashMap hashMap = new HashMap<>();
for (int num : nums) {
hashMap.put(num, hashMap.getOrDefault(num, -1) + 1);
}

return hashMap.keySet().stream().

元記事を表示

Leetcode 222. Count Complete Tree Nodes

# 222. Count Complete Tree Nodes

https://leetcode.com/problems/count-complete-tree-nodes/description/

## アプローチ
### DFS

“`java
class Solution {
public int countNodes(TreeNode root) {
int size = 1;
if(root == null){
return 0;
}

if(root.left != null){
size += countNodes(root.left) ;
}
if(root.right != null){
size += countNodes(root.right) ;
}
return size ;
}
}

“`

元記事を表示

テストスライスアノテーションを使う場合 @SpringBootApplication 付与クラスに直接DIしない方が良い

# 概要

`@SpringBootApplication`を付与したクラスに直接DIをした場合、`@DataJpaTest`や`@WebMvcTest`といったテストスライスアノテーションを利用したテストの実施時に、`NoSuchBeanDefinitionException`が出て失敗することがある。
なぜそうなるのか調査したので、そのメモを残す。

# どういう事象なの?

下記のような`@SpringBootApplication`を付与したクラスがあるとする。

“`java
@SpringBootApplication
public class SlicetestApplication {

private final HelloService helloService;

public SlicetestApplication(HelloService helloService) {
this.helloService = helloService;
}

public static void main(String[] args) {
SpringA

元記事を表示

Javaで何か作ってみる(2022/11/14 Day25)

## 今日やった事
– Javaの動画教材の演習問題である、Jihanプログラムの作成を行った。
→コミットした内容は[こちら](https://github.com/takamatsuryota3/Java/commit/2ead947186b9f5a81c699bc1246d17898448e6cc)
## 参考にしたもの
– [【超絶丁寧解説】Javaプログラミングをゼロから学ぶ!絶対挫折させない「基礎入門」講座【講師評価4.3】](https://www.udemy.com/course/uz-java-kiso/)
→今回取り組んだのは、この動画教材の中の、**J1-EX1_総合演習(アルゴリズム)** の**総合演習(Jihanプログラムの作成)** になる。
– [[Java]Integer.parseIntメソッドの使い方とは?parseIntメソッドやparseUnsignedIntメソッドの使い方・例外の発生するケース・配列の変換Javaコラム](https://www.fenet.jp/java/column/java_tips/664

元記事を表示

【Android_java】AndroidStdioでアクションボタンを追加する方法

– 基本的にスクリーンショットが多い記事になりますのであらかじめご了承ください。
※この記事はあくまでも勉強を始めたばかりの自分メモになります。

# アクションボタンの追加方法

Androidアプリでよく使用される右上のボタン(**アクションボタン**)の実装方法になります。
![3.アクションボタン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962146/01fc4e16-da2e-b637-b526-a652b6a9b005.png)

## xmlファイルの準備
### メニューxmlファイルを用意する

1. プロジェクトを立ち上げる。
2. オレンジ枠で囲まれている`res`フォルダの中に`新規`で`Androidリソース・ファイル`を選択。
![1.新規メニューxmlを作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962146/7ef305c8-6f87-88e3-9d66-3823b

元記事を表示

【Android_java】関連まとめ記事

# 【Android_java】関連まとめ記事
– アンドロイド開発の勉強として自分メモの代わりに作成した記事のまとめになります。
– 順不同で掲載していきますので、記事を探さす際は`Ctrl+F`で検索することをお勧めします。

## 記事
– 【Android_java】AndroidStdioでアクションボタンを追加する方法
https://qiita.com/PONchan9848/items/6a2dec1b3173659dc123

元記事を表示

Leetcode 200. Number of Islands

# 200. Number of Islands

https://leetcode.com/problems/number-of-islands/

## アプローチ
– BFS

“`java
class Solution {
public int numIslands(char[][] grid) {
int height = grid.length;
int width = grid[0].length;
boolean[][] isVisited = new boolean[height][width];
int[] dx = new int[]{1, 0, -1, 0};
int[] dy = new int[]{0, 1, 0, -1};

int result = 0;

for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) {

元記事を表示

Javaで何か作ってみる(2022/11/13 Day24)

## 今日やった事
– Mac環境で、VSCodeでJavaプログラムが実行出来るように開発環境を構築した。
## 参考にしたもの
– [Visual Studio CodeでJavaプログラム開発環境構築 – Qiita](https://qiita.com/jsj05543/items/da54e5db258bc9d2538a)
– [Java環境構築(Adoptium(旧:AdoptOpenJDK))](https://zenn.dev/sasakiki/articles/54f68ee1576380)
– [Javaの開発環境(Mac, VS Code) – Qiita](https://qiita.com/aoyaman/items/cd3ed987b8b704778144)
## 所感
– VSCodeの**Extension Pack for Java**の再インストールと、VSCodeの更新をしたら、設定出来た。更新出来てなかっただけだったのか。。。
## 明日の予定
– 明日からは、勉強がてら、Javaでサンプルプログラムを作成していく。

元記事を表示

Leetcode 1870. Minimum Speed to Arrive on Time

# 1870. Minimum Speed to Arrive on Time

https://leetcode.com/problems/minimum-speed-to-arrive-on-time/description/

## アプローチ
* 二分探索を活用

“`java
class Solution {
public int minSpeedOnTime(int[] dist, double hour) {
int start = 1;
int end = 1000000000;
int result = -1;

while (start <= end) { int midSpeed = start + (end - start) / 2; double keisan = 0.0; for (int i = 0; i < dist.length; i++) { keisan = Math.ce

元記事を表示

【java】基本構文(型編)

# ・はじめに
Java一年未満の方へ研修用
型、変数に関して少し掘り下げて紹介

# ・対象
・Java一年未満

# ・型
#### ◆型とは
 ・データを扱うためにその種類に応じた型が決まっている。
  その種類は、大きく分けてふたつある。プリミティブ型と参照型。

#### ◆プリミティブ型
 <特徴>
  全て変数のサイズ(bit)が決まっている。
  規定のサイズを超える値を格納することはできない。
  メモリのスタック領域に値が入っている

 <種類>
  short、byte、long、int、double、float、char、boolean

ABC277A~Eの解答[Java]

## はじめに
今回はC、Eはコンテスト後のもの、他はコンテスト中のものを載せようと思います。

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

## A – ^{-1}
問題文は[こちら](https://atcoder.jp/contests/abc277/tasks/abc277_a)

$P_i$に重複はないので普通に先頭から見ていけば良いです。
“`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){

//N、Xの受け取り
int N = System.in.nextInt();
int X = System.in.nextInt();

//indexを入れる変数
int ans =

SpringBootのテストスライスアノテーションについて

# 概要

SpringBootのテストスライスアノテーションについて、どのような実装になっているのか探ってみた。

# テストスライスアノテーションとは?

まず、ここでのテストスライスアノテーションは、アプリケーションの全量ではなく一部だけをテストしたい、といった場合に利用するアノテーションのことを指す。([このページ](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#appendix.test-auto-configuration.slices)にSpringBoot公式で提供されている全量が記載されている)

テストスライスアノテーションを利用する動機としては、ユニットテスト実行時間は最小限に抑えつつ、意味のあるユニットテストをしたい、という希望を叶えることにある。
SpringBootで作成するWebアプリケーションであれば、リクエスト・レスポンスのバリデーションや変換を受け持つController層、ビジネスロジックを持つService層、DB等へのアクセスを受け持つReposito

SpringのCache機能をサクッと利用する

Spring(Spring Boot)のCache機能を使ってメソッドの呼び出し結果をキャッシュしておくサンプルです。

# 動作確認バージョン

* Spring Boot 2.7.5
* Spring Framework 5.3.23

# Cache機能の有効化

`@EnableCaching` を付与するとSpring Bootさんの自動コンフィギュレーション機能によってSpringのCache機能が利用できるようになります。

“`java
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching // ★★★アノテーションを追加
public c

【selenium】seleniumの設定~IEモードで実行をやってみた

# 概要
当記事では
  ・Seleniumの実行環境設定
  ・IEモードの実行
の方法について説明します。

# Seleniumの実行環境設定
## jarファイルなど準備
下記のサイトからzipをダウンロードし解凍。
https://selenium.dev/downloads/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33640/f728db4d-0165-1d93-0169-0fc2f7297596.png)

## eclipseのビルドパス設定
プロジェクトのコンテキストメニューから
  ビルド・パス > ビルド・パスの構成
を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33640/644ce540-0aac-56e5-f1b5-47f6aca0fd88.png)

ライブラリータブを表示後、「外部JARの追加」をクリックするとファイル選択を求められるので、

#6 SpringでOracleデータベースに接続する

# 前提条件

1\. 必要インストール
 (1) [Eclipse 2022](https://mergedoc.osdn.jp/)
 (2) [Oracle SQL Developer 21.2.1](https://www.oracle.com/jp/database/sqldeveloper/technologies/download/)
 (3) [Oracle Database 21c Express Edition](https://www.oracle.com/jp/database/technologies/xe-downloads.html)
 (4) [Oracle Database JDBC driver](https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html)

2\. プロジェクトの設定内容
 (1) Eclipseでプロジェクトを立ち上げる(ファイル > 新規 > Spring スターター・プロジェクト)
![image.png](https://qiita-im

【Java】toCharArrayメソッドで2バイト文字が渡ったときの扱い

# はじめに
Java問題集を解いていて、疑問に思ったことを調べたメモ書き
基本情報技術者試験H27年度春期午後問11「セキュアプログラミング」の設問1,dについて

## 1. char型からint型へのキャスト
この問いでは、char型からint型へのキャストも気になったので触れる。
### 1. 以下の記事を参考にした
https://qiita.com/nkojima/items/d358f99efa71655911ea

~~char型は1バイト文字を扱うための型で、intは通常2バイト以上らしい。~~
(2022/11/15訂正:javaの場合、charは2バイト、intは4バイトです)

小さいほうから大きい方へキャストするだけなので、可能とのこと。(符号ありの場合など例外あり)

## 2. toCharArrayメソッド
String型の変数でtoCharArray()メソッドを使用し、
`char[] chars = s.toCharArray();`

のように使用して、文字列を文字配列に置き換えたあと、1文字ずつに対して何らかの処理を行う際に用いる。
この時

データ型 表現できる値や範囲 ビット
boolean true,false 1
byte -128 ~ 127 の整数 8