練習サイト
2022/06/29
695ページを使ったテストを最終日に行う。それまでにできるように。
同型の計算 int < int + int +-* は必ず整数になるから整数に代入できる しかし、割り算は整数同士の結果が少数になる場合がある。
int intData = 1; int intData2 = 4;
int a = intData/intData2 // aは0になる double b = intData/intData2 : bをdouble としても答えは0になる double c =((double)intData/intData2): cの答えは0.25になる。
異型 long = long + int 「強い方」の型になる。
午前中に書いたコード
public class MyClass {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
int intData = 5;
int intData2 = 3;
int sum = intData + intData2; //a
System.out.print(intData);
System.out.print("+");
System.out.print(intData2);
System.out.print("=");
//System.out.print(sum+"\n");
//intData = intData + intData2; //b
intData += intData2; //c
System.out.print(intData+"\n");
// System.out.print(intData+"+"+intData2+"="+sum+"\n");
//a,b,cの書き方は結果は同じcの書き方が今風
System.out.print(intData);
System.out.print("%");
System.out.print(intData2);
System.out.print("=");
// int amari = intData % intData2;
// intData = intData % intData2;
intData %= intData2; //上の行と結果は同じ。こっちのほうがcool
System.out.println(intData);
//
intData ++;
System.out.println(intData);
byte byteData = 1;
byteData =(byte) (byteData +1);
short shortData = byteData;
shortData = (short) (shortData + 1);
//このような処理が必要になるので整数はint と考えてOK
//10進数 %d 8進数 %o 16進数 %x 浮動小数点 %f
intData = 35;
System.out.printf("%d,%o,%x\n",intData,intData,intData);
System.out.printf("%4d,%o,%x\n",intData,intData,intData);//桁そろえに使える
//文字列の数字を数値にする
String str ="5567";
System.out.println(str + 1);
System.out.println(Integer.parseInt(str) + 1);
}
}
同じものが共有フォルダやdokoJAVAにもあります
public class Lesson0203 {
public static void main(String[] args) {
System.out.println("ようこそ占いの館へ");
System.out.println("あなたの名前を入力してください");
String name = new java.util.Scanner(System.in).nextLine();
System.out.println("あなたの年齢を入力してください");
String ageString = new java.util.Scanner(System.in).nextLine();
int age =Integer.parseInt(ageString);
int fortune = new java.util.練習問題Random().nextInt(3);
fortune++;
System.out.println("占いの結果が出ました!");
System.out.println(age +"歳の"+name + "さん、\nあなたの運気番号は"+fortune+"です");
System.out.println("1:大吉、2:中吉、3:吉、4:凶");
}
}
if
public class IfClass {
public static void main(String[] args) {
boolean bool = true; //true は晴れ
if (bool == true) {
System.out.println("洗濯する");
System.out.println("犬と散歩する");
} else {
System.out.println("猫と遊ぶ");
System.out.println("Youtubeを観る");
}
int score = 45;
if (score >= 80 ) {
System.out.println("優");
} else if(score >= 70) {
System.out.println("良");
} else if(score >= 60) {
System.out.println("可");
} else {
System.out.println("不可");
}
//else if の数に制限はない。else if で終わってもOK
}
}
if の続き
public class IfClass {
public static void main(String[] args) {
//文字列の比較 =では比較できないので注意:他の言語ではできることが多い
String name = "AbcDef";
if (name.equals("AbcDef") ) {
System.out.println("同じ");
} else {
System.out.println("異なる");
}
name = "AbcDef";
String name2 ="dddd";
if (name.equals(name2) ) {
System.out.println("同じ");
} else {
System.out.println("異なる");
}
int value = 89 ;
if (value == 80 ) {
System.out.println("80");
} else if(value == 70) {
System.out.println("70");
} else if(value == 60) {
System.out.println("60");
} else {
System.out.println("その他");
}
//switch で書き直したもの
switch (value) {
case 85: // 80でも85でも80を実行する
case 80:
System.out.println("80");
break;
case 70:
System.out.println("70");
break;
case 60:
System.out.println("60");
break;
default: //上のcaseに当てはまらなかったものすべて if の else と一緒
System.out.println("その他");
}
//三項条件演算子
int a = value == 80 ? 1 : 2;
System.out.println("a="+a); // value が80の場合は1になりそれ以外は2がaに入る
//if 文のネスト
int temp = 33;
int humidity = 85;
if (temp >= 30) {
if (humidity >= 80) {
System.out.println("最悪");
}else if(humidity >= 60) {
System.out.println("普通に暑い");
}else if(humidity >= 30) {
System.out.println("結構快適");
} else{
System.out.println("砂漠?");
}
} else if (temp >= 25){
if (humidity >= 80) {
System.out.println("ムシムシする");
} else if(humidity >= 60) {
System.out.println("マアマア");
} else if(humidity >= 30) {
System.out.println("めっちゃ快適");
} else{
System.out.println("火事に注意");
}
}
}
}
2022/07/04
if の練習:うるう年計算
-
演算子 % の使い方
- 数値 % 2 === 1 : 数値を2で割った余りが1の場合:奇数となる
- 数値 % 100 != 0:100で割り切れる
-
うるう年の計算アルゴリズム
- 4の倍数であり100の倍数でないはうるう年
- 100の倍数であっても400の倍数はうるう年
int year = 1900;
if (year % 4 == 0 && year % 100 != 0) {
System.out.println(year + "は閏年");
} else if (year % 400 == 0) {
System.out.println(year + "は閏年");
}else {
System.out.println(year + "は平年");
}
year = 2000;
if ((year % 4 == 0 && year % 100 != 0) ||year % 400 == 0) {
System.out.println(year + "は閏年");
}else {
System.out.println(year + "は平年");
}
year = 2022;
if ((year % 4 == 0 && year % 100 != 0) ||year % 400 == 0) {
System.out.println(year + "は閏年");
}else {
System.out.println(year + "は平年");
}
ループ(繰り返し)//loop while do,while for /break continue
- for構文の基本
int sum = 0 ;
for (int i = 1 ; i <= 10 ; i++) {
if (i % 2 == 1) {
sum += i; // sum = sum + i;
}
}
System.out.println("sum = " + sum);
2022/07/06
メソッド(関数) テキスト第5章
public class Method {
public static void main(String[] args) {
// 基本的な引数渡し
int a = 5;
System.out.println(”メソッド実行前のaの値” + a);
mRec(a); // a のことを引数(ひきすう)と呼ぶ mRecにaを渡す
//aを渡すが、 a 自体を渡すのではなく a に入っている数値を渡すだけ。なので、メソッド内で変更してもメインの a は変わらない。
//値渡しと参照渡しがあり、この例は「値渡し」
//引数の型によって値渡しか参照渡しは決まる。P49の型はすべて値渡し。
System.out.println(”メソッド実行後のaの値” + a); //メソッド実行前と変わっていないことを確認
// オーバーロードの呼び出し例 同じメソッド名で引数リストが違うことで別のメソッドが呼ばれていることに注目
mSum();
int iStart = 1;
mSum(iStart);
int iEnd = 100;
mSum(iStart,iEnd);
// 戻り値を使う例
int sum =10;
sum += mSum4(iStart,iEnd); //メソッドは普通の変数のように使える(この場合はintだったので数字として扱える)
// iStart と iEnd に入った数字を引数にして mSum4 に行き、mSum4 内で計算した結果が mSum4(iStart,iEnd) に入っていると考えるとわかりやすい。
System.out.println("main - mSum4 = "+sum); //mSum4 メソッドはメソッド内に System.out.printlnを記述していないので、ここで表示させている。
// 引数にいろんな型の変数を使ってみる。それぞれの型で扱える最大値を入れている(文字は別)。
// 整数はint、少数は double にしておけば大体OK。企業の売上とかになるとlongを使う。
byte byteData = 127;
short shortData = 32767;
long longData = 0x7fffffffffffffffL;
char charData = 'X';
float floatData = 2.3f;
double doubleData = 456.321;
String str = "兵庫県";
mDisp(byteData,shortData,longData,charData,floatData,doubleData,str); // mDisp の呼び出し
//練習問題 5-1 呼び出し
introduceOneself();
}//メインメソッドここまで
//引数をもらうメソッドの例
public static void mRec(int b) {
//ここで宣言する変数はメソッド内でしか使えない。だから
//他の場所で使っているのと同じ名前でも構わない。
//引数は型が合っていればいい。複数の型の変数をやり取りする時は順番に注意。
//呼び出しの変数名と違っていても構わない。この例ではメインで a として呼び出しているがメソッド内では b に入れている。
System.out.println("メソッド内計算実行前:"+b); //メインから受け取った数値
b++; //メインから受け取った数値に1を加えた
System.out.println("メソッド内計算実行後:"+b); //結果を表示
}
//引数の練習
public static void mDisp(byte a,short b,long c,char d, float e,double f,String g) {
//重要なのは上の呼び出しの引数リストと型の対応が取れていること。受ける変数名は、メソッド内で使いやすいものを使えばいい。
// 実際には呼び出しの変数名をそのまま使うことが多い。
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
System.out.println(g);
}
// overload オーバーロードの例
//同じ名前でも引数リストが異なれば問題ない。mSum が例。同じ名前だがエラーになっていない。
//どのメソッドが使われているかを調べるためには引数リストの一致を調べる必要がある。
//呼び出す際にも使いたいメソッドの引数リストを把握しておかないと、異なるメソッドを使ってしまうことになる。
//引数無し メソッド内で1から10までの合計を固定して計算
public static void mSum() {
int sum = 0 ;
for (int i = 1 ; i <= 10 ; i++) {
sum += i;
}
System.out.println("sum = " + sum);
}
//引数が1 加算開始の数字を引数でもらって10までの加算している
public static void mSum(int sNum) {
int sum = 0 ;
for (int i = sNum ; i <= 10 ; i++) {
sum += i;
}
System.out.println("mSum2 = " + sum);
}
//引数が2 加算開始のと終了の数字を引数でもらって開始から終了までの数値を加算している
public static void mSum(int sNum, int eNum) {
int sum = 0 ;
for (int i = sNum ; i <= eNum ; i++) {
sum += i;
}
System.out.println("mSum3 = " + sum);
}
// オーバーロードの例 ここまでーーーーーーーーーーーーーーーーーーーーーーーーーー
//戻り値を使う例 返す変数の型に合わせて public static の右を書き換える。
//この例ではsum の値を返すので int にしている。戻り値を返さない場合には void (デフォで入っているやつ)を使う。
//二つの引数を受け取って計算した結果を返す。sumを返すのではなく、sumに入っている数値を mSum4 の戻り値として返す。
//mein からはメソッド内で宣言した変数を見ることはできない。メソッドを抜けたときにメソッド内で宣言した変数はなくなる。
public static int mSum4(int sNum, int eNum ) {
int sum = 0 ;
for (int i = sNum ; i <= eNum ; i++) {
sum += i;
}
return sum; //テキストP200
}
//練習問題 5-1 キー入力を表示するようにバージョンアップしてあります。(前回のコピペww)
public static void introduceOneself() {
System.out.println("あなたの名前を入力してください");
String name = new java.util.Scanner(System.in).nextLine();
System.out.println("あなたの年齢を入力してください");
String ageString = new java.util.Scanner(System.in).nextLine();
int age =Integer.parseInt(ageString);
System.out.println("あなたの身長を入力してください");
float height = new java.util.Scanner(System.in).nextFloat();
System.out.println("あなたの干支を入力してください");
String strEto = new java.util.Scanner(System.in).nextLine();// Scanner ではcharに代入するできないので一度Stringで受けている
char charEto = strEto.charAt(0); //String から一文字抜き取る。ここでは最初の一文字だけ欲しいのでゼロとしている。
// こんなめんどくさいことしてまでcharに入れる必要はない。Stringで受けてStrinの一文字目だけ表示すればいいだけ。
System.out.println("私の名前は" + name + "です");
System.out.println("年齢は" + age + "歳で、干支は" + charEto);
System.out.println("身長は" + height + "cmです");
}
}
配列 テキスト4章
import java.util.Random; // ランダムを発生させる便利な機能を読み込む(詳細は後日説明)
public class ArrayClass {
public static void main(String[] args) {
//mBase(); //配列の基本が入ったメソッドを実行したいときに使う。
//参照渡しの確認 配列をメソッドに渡した場合にはメソッド内で同じものが更新される。
//メインから引数として配列を指定した場合にはメソッドには「どこにあるか」だけが渡される。
//メソッドはそこにある配列を操作するので、メソッドを抜けてもメソッド内で行った結果が配列に反映されたままになる。
//なので、配列を受けるメソッドは結果を返すように見えるのに void で定義される。
int[] intD1Array = new int[10];
System.out.println(”メインで定義した直後のintD1Arrayのアドレス: ”+arrayD1);
initD1Array(intD1Array);//配列にランダムに生成した数字を入れるメソッド
dispD1Array(intD1Array);//配列に格納された値を表示するメソッド
}
public static void initD1Array(int[] arrayD1) {
System.out.println(”initD1Array で受け取ったintD1Arrayのアドレス: ”arrayD1); //メインで実行したものと同じアドレスが表示されることを確認
Random ran = new Random(); //ランダムを発生させるクラスのオブジェクトを生成する。
// 一番上でinportしたのでこれができる
// Random 型は様々なメソッドを持っていてとっても便利なのでよく使われる。
//javascript でやったような5を掛けて切り捨てると行った面倒なことはしなくていい。
// import java.util.Random とセットで覚えておく。
for (int i = 0; i < arrayD1.length; i++) {
arrayD1[i] = ran.nextInt(1000); //Random の持っているメソッドのうち指定した数字までの整数の乱数を発生させるnextIntを使っている。
// ranでランダムに発生した1000未満の数字を i 番目の配列に代入
}
}
//配列に格納された値を表示するメソッド
public static void dispD1Array(int[] arrayD1) {
System.out.println(dispD1Array で受け取ったintD1Arrayのアドレス: ”arrayD1);//メインで実行したものと同じアドレスが表示されることを確認
for (int i = 0; i < arrayD1.length; i++) {
System.out.printf("%4d",arrayD1[i] );
}
System.out.println();
}
// 配列の基本
public static void mBase() {
//配列の宣言方法
int[] intArray = new int[10]; //int が10入る配列を宣言
double [] doubleAllay = new double[10]; //double が10入る配列を宣言
//配列にはJAVAで使えるすべてのデータ型を設定できる。
int[] intArray2 = {1,2,3,4,5,6,7,8,9,10}; //直接値を入れて初期化すれば new を書かなくても良い
//配列からデータを取り出す方法。[] 内に何番目の「箱」から取り出すか指定する。0から始まるので注意。
// int[] intArray = new int[10]; で指定すると10の箱が入ったintArrayという配列ができるが、0〜9で操作する必要がある。
System.out.println(intArray2[3]); //この例では 4
// この例の3を添え字と呼ぶ(他の言語でも基本同じ)
// 配列にデータを入れる方法
int i = 5 ;
intArray2[i] = new java.util.Scanner(System.in).nextInt(); //intArray2 の i 番目にキー入力した数値を入れる
System.out.println(intArray2[i]);
}
}
- 次回にはこれまでに習ったことで書ける簡単なプログラムを書く演習を行うそうです。
- 課題の予想。
public class rensyuu {
public static void main(String[] args) {
// 変数の宣言・初期化
int num = 1;
double bigNum = 123456789;
String mojiretsu = "文字列";
int[] intD1Array = new int[10]; //10個の配列を宣言:中身は空
int numbers[] = { 1, 2, 3, 4, 5 }; //配列を宣言して中身を入れた例
// 演算
int n1 = 5;
int n2 = 3;
int n3 = n1 + n2;
System.out.println(n3);
n3 = n1 % n2; // n1/n2 のあまりをn3に入れる
System.out.println(n3);
//割算で答えが少数になる特例
double n4 = (double)n1 / n2;
System.out.println("少数の計算結果:"+n4);
// キー入力
System.out.println("なんでもいいので\nキー入力してenterを\n押してください");
String name = new java.util.Scanner(System.in).nextLine();
System.out.println(name);
// 簡単な if文
int jouken = 4;
if (jouken == 3) {
System.out.println("false");
}
// if else 晴れの場合は bool をtrueとするという前提で:
boolean bool = true;
if (bool == true) {
System.out.println("晴れているので洗濯する");
} else {
System.out.println("雨なので猫と遊ぶ");
}
// 下のように書いてもいい
String tenki = "雨";
if (tenki.equals("晴れ")) { //テキストの比較に注意
System.out.println("晴れているので洗濯する");
} else {
System.out.println("雨なので猫と遊ぶ");
}
// for ループ
int sum = 0;
for (int i = 1; i <= 10; i++) { // 繰り返し開始
sum += i; // sum にiを加算していく
} // ここまで繰り返す
System.out.println("ループの結果:sum = " + sum);
// メソッド 呼び出し 引数無し
yobi1();
yobi2("ヤッホー");
int motoNum = 5;
System.out.println(motoNum + "を渡して"+yobi3(motoNum)+"を受け取った。");
showNumbers(numbers);
}
//メソッド 引数なし:
public static void yobi1() {
System.out.println("引数無しメソッドが呼び出されたよ");
}
// メソッド 引数あり:
public static void yobi2(String a) {
System.out.println(a + "を受け取った");
}
// メソッド 戻り値あり
public static int yobi3(int a) {
a = a * 1234;
return a;
}
// メソッド 配列を引数にした例
public static void showNumbers(int[] number) {
for(int i =0 ; i < number.length ; i++) {
System.out.println(number[i]);
}
}
}
2022/07/13
- 共有フォルダの/Flee/DyuA をeclipseのワークスペースにコピーしてインポート
-
eclipse のデバッガ
- ソース行の行番号をWクリックしブレークポイント設定(デバッグで実行がストップする行の設定)
- 実行メニューの「デバッグ(G)」>「Javaアプリケーションの実行」
-
for文
for (int i = 0; i < arrayD1.length; i++) { System.out.printf("%4d",arrayD1[i] ); } -
拡張 for 文
for (int val : arrayD1) { System.out.printf("%4d",val); }
-
二次元配列から拡張forで中身を取り出す
for(int[] d1 : arrayD2) { // 配列を一行とりだすから[]は一つ for(int d : d1) { // 一次元のはいれつから一つずつとりだす System.out.printf("%4d",d); } System.out.println(); }
練習問題
public class DrvDyuA {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
System.out.println( "DrvDyuA main() start\n" );
System.out.println( "mSum()の実行結果" );
// 課題1)mSum()を呼び出す文を記述しなさい
mSum();
System.out.println(); // 空行1行挿入
// 課題2)は33行目
// 課題3)オーバロードメソッドmSum( int, int )を呼び出し戻り値をint型sumで受け取るように記述しなさい
int sum = mSum(1,1000);
System.out.println( "オーバロードメソッドmSum( int, int )の実行結果" );
// 課題4)sumを表示しなさい
System.out.println(sum);
System.out.println( "\nDrvDyuA main() end" );
}
public static void mSum() {
// 1~1000までの合計を求めて表示する
int sum = 0;
for( int i = 1; i <= 1000; i++ ) {
sum += i;
}
System.out.println( "1~1000までの合計 = " + sum );
}
// 課題2)mSum()のオーバロードメソッドmSum( int, int )の作成
// 2-1)合計を求める最初の値(=1)と最後の値(=10000)を引数として受け取る
// 2-2)合計を求める際,7の倍数は合計には加えない
// 2-3)求めた合計をメソッドの戻り値とする
public static int mSum(int sNum, int eNum) {
int sum = 0;
for( int i = sNum; i <= eNum; i++ ) {
if (i % 7 != 0) {
sum += i;
}
}
return sum;
}
// 実行結果
/*
mSum()の実行結果
1~1000までの合計 = 500500
オーバロードメソッドmSum( int, int )の実行結果
7の倍数を除く 1~10000までの合計 = 42862858
*/
}
2022/07/20
- 二次元配列続き 各行の最大値、最小値を求めるメソッドを書いた
-
メインに追加
int[] sum2 = sumD2Array(intD2Array); int[] max2 = maxD2Array(intD2Array); int[] min2 = minD2Array(intD2Array); for (int r = 0; r < intD2Array.length; r++) { System.out.printf("%2d行目 合計 = %5d 最大 = %5d 最小 = %5d \n", r, sum2[r],max2[r],min2[r]); } -
メソッド
public static int[] maxD2Array(int[][] arrayD2) { int[] max = new int[arrayD2.length]; // 行数 for (int i = 0; i < max.length; i++) { max[i] = Integer.MIN_VALUE; } for (int r = 0; r < arrayD2.length; r++) { for (int c = 0; c < arrayD2[r].length; c++) { if (max[r] < arrayD2[r][c]) { max[r] = arrayD2[r][c]; } } } return max; } public static int[] minD2Array(int[][] arrayD2) { int[] min = new int[arrayD2.length]; // 行数 for (int i = 0; i < min.length; i++) { min[i] = Integer.MAX_VALUE; } for (int r = 0; r < arrayD2.length; r++) { for (int c = 0; c < arrayD2[r].length; c++) { if (min[r] > arrayD2[r][c]) { min[r] = arrayD2[r][c]; } } } return min; }
static : クラスメソッド --- : インスタンスメソッド: オブジェクトの定義ファイルと考えると分かりやすいか
ファイルの分割
-
chap04で作ったファイルをメインとメソッドに分割した。
- 呼び出されるメソッドを新規作成するときに「public static void main(Strin[] args)」にチェックを入れない。
- 「public class メソッド名 」とする。これまでに作ってきた 「public static class メソッド名」と異なるので注意。
- メソッドの中身はほとんど変わらないが、メインから呼び出す際に。クラス名が必要になる。
同じファイルにある場合 : initD1Array( intD1Array ); CD1Array.class に分けた場合:CD1Array.initD1Array( intD1Array );
オブジェクト化
これまでのメソッドは同じファイルにあるか否かを問わず、定義すればメインからそのまま呼び出すことができた。 が、オブジェクトは new で変数として実体化させる必要がある(言葉遣いが変かもしれません)。
-
メイン
public class DrvChap08 { public static void main(String[] args) { m05(); } public static void m05() { ContMachine cm = new ContMachine(); // new することでContMachine 型のインスタンスが作られる //なので、これ以降はメソッドを呼び出すのではなくオブジェクトの持つメソッドを実行させるイメージとなる cm.init(); cm.pout(); System.out.println( "2台クラッシュ" ); cm.crush( 2 ); cm.pout(); System.out.println( "3台修理" ); cm.recover( 3 ); cm.pout(); } }
-
クラス(インスタンス)
public class ContMachine { private int nMachine; //利用可能なマシン数を入れる変数を宣言: public void init() { //nMachine はこのクラスの中では一つのものなので返り値は不要。だから return も書かない。 nMachine = 40; //nMachineの初期値を40とした } public void crush( int x ) {//新たに故障したマシン数 nMachine -= x; } public void recover( int x ) {//修復したマシン数 nMachine += x; } public void pout() { //利用可能マシン台数表示 System.out.printf( "使用可能マシン台数 = %d\n", nMachine ); } }
2022/07/22
- パーソンコーポレーション会社説明会
-
集計
select 費目 ,sum(出金額) as 費目別の出金額合計 from 家計簿アーカイブ where 出金額 > 0 group by 費目
-
集計キーを複数
select 費目,日付 ,sum(出金額) as 費目別の出金額合計 from 家計簿アーカイブ where 出金額 > 0 group by 費目,日付 order by 費目
-
having:元データにマイナスの数値が入っているような場合where で0以上にしてしまうと集計すべきマイナスが除外されてしまう
select 費目 ,sum(出金額) as 費目別の出金額合計 from 家計簿アーカイブ group by 費目 having sum(出金額) > 0 //having はgroup by の後に書く order by sum(出金額) desc
2022/08/03
-
コンストラクタ
- コンストラクタのオーバーロード:コンストラクタの引数の種類・数で選べる
-
setter , getter
- this
- 継承(1/0章)
2022/08/09
- クラス変数、クラスメソッド
-
文字列の比較方法として、compareTo
if(s2.compareTo(s3)<0) System.out.println("not same"); System.out.println(s2.compareTo(s3)); String s1 = "Java and JavaScript"; if (s1.contains("Java")) { System.out.println("文字列s1は、Javaを含んでいます"); } if (s1.endsWith("Java")) { System.out.println("文字列s1は、Javaが末尾にあります"); } System.out.println("文字列s1で最初にJavaが登場する位置は" + s1.indexOf("Java")); System.out.println("文字列s1で最後にJavaが登場する位置は" + s1.lastIndexOf("Java")); } String s1 = "Java programing"; for(int i = 0;i<s1.length();i++) { System.out.println(s1.charAt(i)); } System.out.println("文字列s1の4文字目以降は" + s1.substring(3)); // ⇒ a programing System.out.println("文字列s1の4~8文字目以降は" + s1.substring(3, 8)); // ⇒ a pro
2022/08/10
- File の入出力
2022/08/17
- File の入出力
- abstract,interface
2022/08/18
- File の入出力テスト
- 匿名化クラス??
- ラムダ式からのストリーム??