20210613のJavaに関する記事は8件です。

【Java】AtCoderのABC-203,204,205に参加しました(レート:277→242→237→223。205の解答のみ振り返り)。

こんばんは。 しまった!結構サボってしまっていた・・。 題記の通り、ABCに毎週参加していましたが、202以降更新していませんでした。 参加者のレベルが上がっている(のかな?)&自分がB問題までしか解けない等の状況でマイナスが続いて凹んでいました。 6/13は、ABC-205に参加しましたので、振り返りをします。 レートは以下の通りとなっています。 レートは14下がり223に。順位は7021/8743でした。C問題まで解けた割に低かったです。ただ、最後落ち着いてC問題に対処できたので、自分としてはまあまあ合格ラインと考えています。 ただ、今のままだと、年内の茶色目標が厳しくなってきたかも。 A問題 100ml中、Aキロカロリーが含まれる飲み物がある。Bmlある場合、どれだけのカロリーがあるか? import java.util.Scanner; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); double a = sc.nextDouble(); double b = sc.nextDouble(); System.out.println(a*b/100); } } B問題 N個の要素を持つ数列(A1..An)がある。 並べ替えたうえで数列=(1,2,3...N)になるか? まず、入力した数列を昇順にソートして、あらかじめ用意した(1,2,3...N)の数列と1要素ずつ比較。 数列の中に値の重複があるケースも想定されるので、1個ずつ比較するのが吉と考えました。 import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[] = new int[n]; int b[] = new int[n]; for(int i=0;i<n;i++){ a[i] = sc.nextInt(); b[i] = i+1; } char flg = '0'; Arrays.sort(a); for(int i=0;i<n;i++) { if(a[i]==b[i]){ }else{ flg = '1'; } } if(flg=='1'){ System.out.println("No"); }else{ System.out.println("Yes"); } } } C問題 A,B,Cの3つの数列を用意。 AのC乗、BのC乗を比較して、不等号を出力。 C乗を全部やる訳にはいかない。でもあれ?C乗なのは変わらないのだから、AとBだけを比較すれば良いじゃないの。これサービス問題?と錯覚した自分がいました。 油断してスタートして、あんなケースこんなケース、コードはぐちゃぐちゃになっています・・。 (混乱した例) Aがマイナスだった以下のようなケースの場合 A:-3、B:2 Cが偶数の場合は、単純にどちらが大きいか比べる。Cが基数の場合は、どんな時もBが大きくなる。 こういう考慮を重ねると、ぐちゃぐちゃになりますね。 import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); long a = sc.nextLong(); long b = sc.nextLong(); long c = sc.nextLong(); if((a>=0&&b>=0)){ //---------- //System.out.println("a"); if(a>b){ System.out.println(">"); }else{ //System.out.println("2"); if(a==b){ System.out.println("="); }else{ System.out.println("<"); } } //---------- }else{ //-dottimo mainasu--------- if(a<0&&b<0){ //System.out.println("3"); if(c%2==0){ //---------- if(a>b){ System.out.println("<"); }else{ if(a==b){ System.out.println("="); }else{ System.out.println(">"); } } //---------- }else{ //---------- if(a>b){ System.out.println(">"); }else{ if(a==b){ System.out.println("="); }else{ System.out.println("<"); } } //---------- } //-dottimo mainasu---janai------ }else{ //---------- if(a<0){ //System.out.println("4"); //---a<0 if(c%2==0){ // gusu tujo if(a*(-1)==b){ System.out.println("="); }else{ //syusei from if((a*(-1))<(b)){ System.out.println("<"); }else{ System.out.println(">"); } //syusei to //System.out.println("<"); } // gusu tujo }else{ // kisu System.out.println("<"); // kisu } //---a<0 }else{ //System.out.println("5"); //---b<0 if(c%2==0){ // gusu tujo if((a)==(b*-(1))){ System.out.println("="); }else{ //syusei from if((a)<(b*-(1))){ System.out.println("<"); }else{ System.out.println(">"); } //syusei to } // gusu tujo }else{ // kisu System.out.println(">"); // kisu } //---b<0 } } //-dottimo mainasu--------- //---------- } } } 感想 もちろん茶色は目指すのですが、あまりレートにこだわり過ぎるのも良くないと思いました。レートだけしか見えなくなってしまい、レート上がればOK、みたいになって振り返るをおろそかにしてしまいます。短絡的な性格ですね。 振り返りつつ、練習を重ねていきます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Java】AtCoderのABC-203,204,205に参加しました(レート:272→242→237→223。205の解答のみ振り返り)。

こんばんは。 しまった!結構サボってしまっていた・・。 題記の通り、ABCに毎週参加していましたが、202以降更新していませんでした。 参加者のレベルが上がっている(のかな?)&自分がB問題までしか解けない等の状況でマイナスが続いて凹んでいました。 6/13は、ABC-205に参加しましたので、振り返りをします。 レートは以下の通りとなっています。 レートは14下がり223に。順位は7021/8743でした。C問題まで解けた割に低かったです。ただ、最後落ち着いてC問題に対処できたので、自分としてはまあまあ合格ラインと考えています。 ただ、今のままだと、年内の茶色目標が厳しくなってきたかも。 A問題 100ml中、Aキロカロリーが含まれる飲み物がある。Bmlある場合、どれだけのカロリーがあるか? import java.util.Scanner; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); double a = sc.nextDouble(); double b = sc.nextDouble(); System.out.println(a*b/100); } } B問題 N個の要素を持つ数列(A1..An)がある。 並べ替えたうえで数列=(1,2,3...N)になるか? まず、入力した数列を昇順にソートして、あらかじめ用意した(1,2,3...N)の数列と1要素ずつ比較。 数列の中に値の重複があるケースも想定されるので、1個ずつ比較するのが吉と考えました。 import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[] = new int[n]; int b[] = new int[n]; for(int i=0;i<n;i++){ a[i] = sc.nextInt(); b[i] = i+1; } char flg = '0'; Arrays.sort(a); for(int i=0;i<n;i++) { if(a[i]==b[i]){ }else{ flg = '1'; } } if(flg=='1'){ System.out.println("No"); }else{ System.out.println("Yes"); } } } C問題 A,B,Cの3つの数列を用意。 AのC乗、BのC乗を比較して、不等号を出力。 C乗を全部やる訳にはいかない。でもあれ?C乗なのは変わらないのだから、AとBだけを比較すれば良いじゃないの。これサービス問題?と錯覚した自分がいました。 油断してスタートして、あんなケースこんなケース、コードはぐちゃぐちゃになっています・・。 (混乱した例) Aがマイナスだった以下のようなケースの場合 A:-3、B:2 Cが偶数の場合は、単純にどちらが大きいか比べる。Cが基数の場合は、どんな時もBが大きくなる。 こういう考慮を重ねると、ぐちゃぐちゃになりますね。 import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); long a = sc.nextLong(); long b = sc.nextLong(); long c = sc.nextLong(); if((a>=0&&b>=0)){ //---------- //System.out.println("a"); if(a>b){ System.out.println(">"); }else{ //System.out.println("2"); if(a==b){ System.out.println("="); }else{ System.out.println("<"); } } //---------- }else{ //-dottimo mainasu--------- if(a<0&&b<0){ //System.out.println("3"); if(c%2==0){ //---------- if(a>b){ System.out.println("<"); }else{ if(a==b){ System.out.println("="); }else{ System.out.println(">"); } } //---------- }else{ //---------- if(a>b){ System.out.println(">"); }else{ if(a==b){ System.out.println("="); }else{ System.out.println("<"); } } //---------- } //-dottimo mainasu---janai------ }else{ //---------- if(a<0){ //System.out.println("4"); //---a<0 if(c%2==0){ // gusu tujo if(a*(-1)==b){ System.out.println("="); }else{ //syusei from if((a*(-1))<(b)){ System.out.println("<"); }else{ System.out.println(">"); } //syusei to //System.out.println("<"); } // gusu tujo }else{ // kisu System.out.println("<"); // kisu } //---a<0 }else{ //System.out.println("5"); //---b<0 if(c%2==0){ // gusu tujo if((a)==(b*-(1))){ System.out.println("="); }else{ //syusei from if((a)<(b*-(1))){ System.out.println("<"); }else{ System.out.println(">"); } //syusei to } // gusu tujo }else{ // kisu System.out.println(">"); // kisu } //---b<0 } } //-dottimo mainasu--------- //---------- } } } 感想 もちろん茶色は目指すのですが、あまりレートにこだわり過ぎるのも良くないと思いました。レートだけしか見えなくなってしまい、レート上がればOK、みたいになって振り返るをおろそかにしてしまいます。短絡的な性格ですね。 振り返りつつ、練習を重ねていきます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

自分の記事のまとめページ

SpringBootソリューション1〜3 https://qiita.com/JoeB/items/02f64562b6928606c716 https://qiita.com/JoeB/items/04258030c107856cceae https://qiita.com/JoeB/items/5c0de835ddd81b201515 SpringBoot関連の細かいところ https://qiita.com/JoeB/items/888a2822ffb0800b6693 ============================= PowerShellの知識 システムインテグレータの現場から https://qiita.com/JoeB/items/0180f08d87449dd67133 Linuxコマンド https://qiita.com/JoeB/items/db24e22299747b031534 Git https://qiita.com/JoeB/items/6df07f06bff86a3a587b コンピューターサイエンス https://qiita.com/JoeB/items/25226bcebd0dd36e8c96
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[NEW] Minecraft Spigot Server [1.17] Java用サーバーで統合版とクロスプレイをする方法 「サーバーインストールから」

はじめに Ubuntuに限らず、パソコン関連のやり方類はWebサイトをいくつか見る必要があり、場合によっては数十ものサイトを見比べて取捨選択する必要があります。 この記事はそうしたやり方類をまとめて書いていきます。 今回はJava版Minecraftと統合版をクロスプレイする方法をサーバーインストールから解説します。 この記事でできること Minecraft Java と Minecraft BEでクロスプレイが実現します。 ※Java版とBE版のクロスプレイは本来不可能であり、BE版のサーバーと通信するためのパケットをJava版に変換して通信するプラグインを導入していくため、不安定ではありますがログインおよびプレイは可能です。 対象読者 コマンド操作がわかる人 コマンド操作がわからない人 Minecraftでクロスプレイをしたい人 1. Java 16 のインストール Minecraft 1.17 からは Java 16 になり、以前の Java 8 では不十分なため、Java 16 をインストールします。 以下のコマンドでインストールしてください。 sudo apt-get -y install openjdk-8-jdk 2. Spigot Server の入手 Spigot Serverはユーザーでビルドしないといけないので、ビルドツールをダウンロードしてきてビルドします。 また、ターミナルの作業領域でファイルを作成するので、サーバーディレクトリを作成してそこで作業を行ってください。 以下のコマンドでディレクトリを作ってそのディレクトリに移動します。 mkdir mcServer && cd $_ ビルドツールをダウンロードします。 以下のコマンドでダウンロードできます。 wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar ダウンロードが完了したらbuildします。 以下のコマンドでbuildを開始します。時間がかかるので気長に待ちましょう java -jar BuildTools.jar --rev 1.17 ビルドが完了したら、spigot-1.17.jar ファイル以外は削除してかまいません。 これでSpigotサーバーが入手できました。 3. Minecraft サーバーを実行 起動のたびに引数を入力するor↑キーするのは面倒なのでシェルスクリプトを作っておきます。 gedit や vi などを起動して以下を入力後、拡張子 .sh で保存します。今回は run.sh とします。 #!/bin/sh java -Xms1024M -Xmx8G -jar spigot-1.17.jar nogui このままでは起動しないので、許可を与えます。 chmod +x run.sh 許可を与えたら一回起動します。 同意書が出てくるのでtrueにし、もう一度実行して、Done まで行ったら stop と入力していったん止めます。 4. パケット変換プラグインの導入 統合版のパケットをJava版に変換するプラグインを導入します。 以下のサイトからSipgot用のプラグインをダウンロードして、サーバーディレクトリ内のpluginディレクトリに突っ込みます。 導入したら、一度起動して終了します。 5. 認証するプラグインの導入 統合版でのJava版のログインを不要にするプラグインを導入します 以下のサイトからSipgot用のプラグインをダウンロードして、サーバーディレクトリ内のpluginディレクトリに突っ込みます。 6. プロパティの変更 以下を変更します。 サーバーディレクトリ > server.properties online-mode=false プラグインディレクトリ > Geyser-Spigot > config.yml auth-type: floodgate 7. 起動 完成 以上 構築方法はこれで終了です 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Javaでクラスの継承を使ったメソッドの呼び出し実験をしました

Javaでクラスの継承を使ったメソッドの呼び出し実験をしました。 package nogizaka; // Author 2021/06/13 // 乃木坂好きのITエンジニア class A{ A(){ } A(String message){ System.out.println(message + "大好き"); } } class B extends A{ B(){ System.out.println("Hello from B"); } B(String name){ System.out.println(name); } } public class Problem6_7 { public static void main(String[] args) { //継承元のAのコンストラクタを呼び出す A b = new A("乃木坂46"); //継承先のBのコンストラクタを呼び出す B b1 = new B(); //継承先のBの引数付きのコンストラクタをオーバーロードする B a = new B("山下美月"); } }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Javaでクラスの継承を使ったコンストラクタの実験をしました

Javaでクラスの継承を使ったメソッドの呼び出し実験をしました。 package nogizaka; // Author 2021/06/13 // 乃木坂好きのITエンジニア class A{ A(){ } A(String message){ System.out.println(message + "大好き"); } } class B extends A{ B(){ System.out.println("Hello from B"); } B(String name){ System.out.println(name); } } public class Problem6_7 { public static void main(String[] args) { //継承元のAのコンストラクタを呼び出す A b = new A("乃木坂46"); //継承先のBのコンストラクタを呼び出す B b1 = new B(); //継承先のBの引数付きのコンストラクタをオーバーロードする B a = new B("山下美月"); } }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Java基本

ひしだまさんのJavaメモ Java 日付の型変換あれこれ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Java】身長/体重を入力したらBMIが分かるプログラム

作りたいもの 1.身長と体重を入力する 2.BMIの計算結果を表示する 3.「低体重、普通体重、肥満」のどれかの評価を付ける 以下のソースコードは、Java独学2か月くらいの僕が書いたものです。 @shiracamus さんからアドバイスいただけたので、初学者の方は、ぜひ見比べてみてください。 (お~!ってなりますww) ソースコード(※参考にしないほうがいいやつw) Test1.java import java.util.Scanner; public class Test1{ public static void main(String[] args) { try { @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); System.out.print("身長(m):"); double inputHeight = scan.nextDouble(); System.out.print("体重(kg):"); double inputWeight = scan.nextDouble(); Bmi result = new Bmi(inputHeight, inputWeight); double resultBmi = result.getBmi(inputHeight, inputWeight); System.out.println("BMI:" + resultBmi); System.out.println(); if(resultBmi < 18.5) { System.out.println("評価:低体重"); }else if(resultBmi < 25) { System.out.println("評価:普通体重"); }else { System.out.println("評価:肥満"); } }catch(Exception e) { System.out.println("\nやり直せ"); } } } class Bmi{ public double weight; public double height; public Bmi(double height, double weight) { this.height = height; this.weight = weight; } public double getBmi(double height, double weight) { return weight / (height * height); } } 実行結果. 身長(m):1.7 ←自分で入力 体重(kg):60 ←自分で入力 BMI:20.761245674740486 評価:普通体重 どうですかね?? おかしなところあれば、(優しい)コメントください。 個人的には、「double height」とかが何回も出てくるのが気にくわないですw マネするべきソースコード 以下は、@shiracamus さんが書いてくれたソースコードになります。 こちらを参考にしてみてください。 ポイントは下記の通り 1.クラス名は直感的にみて分かりやすく命名する 2.インスタンス変数を理解し、コードが冗長にならないようにする HealthChecker.java import java.util.Scanner; public class HealthChecker { public static void main(String[] args) { try { @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); System.out.print("身長(m):"); var height = scan.nextDouble(); System.out.print("体重(kg):"); var weight = scan.nextDouble(); var body = new Body(height, weight); System.out.println("BMI:" + body.bmi()); System.out.println(); System.out.println("評価:" + body.style()); } catch (Exception e) { System.out.println("\nやり直せ"); } } } class Body { final public double weight; final public double height; public Body(double height, double weight) { this.height = height; this.weight = weight; } public double bmi() { return weight / (height * height); } public String style() { var bmi = bmi(); if (bmi < 18.5) { return "低体重"; } else if (bmi < 25) { return "普通体重"; } else { return "肥満"; } } } 感想 コードを見ればわかる通り、圧倒的に美しいですね。 僕のソースコード(Test1.java)では、「height」と「weight」何回出てくるんだよって感じw やっぱり、先輩プログラマーに見ていただけるのはとても貴重だなと感じました。一人でやっていると、 「エラーがでてないからOK」と思い、どうしても脳死になりがちです。。。 情報発信系のサイトの使い方としては、間違ってるかもしれませんが、あと半年(いや、1年)ほど お付き合いいただければ幸いです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む