実技(Javaプログラミング実習2)⑧

1.Split


public class SplitLesson {

	public static void main(String[] args) {
		String str="りんご,みかん,ばなな";
		String[] data=str.split(",");
		System.out.println(data.length);//3
		System.out.println(data[0]);//りんご
		System.out.println(data[1]);//みかん
		System.out.println(data[2]);//ばなな
		
		str="さるといぬときじ";
		data=str.split("と");
		System.out.println(data.length);//3
		System.out.println(data[0]);//さる
		System.out.println(data[1]);//いぬ
		System.out.println(data[2]);//きじ
		
		str="さるandいぬandきじ";
		data=str.split("and");
		System.out.println(data.length);//3
		System.out.println(data[0]);//さる
		System.out.println(data[1]);//いぬ
		System.out.println(data[2]);//きじ
		
		str="りんご,みかん,,ばなな";
		
		data=str.split(",");
		System.out.println(data.length);//4
		System.out.println(data[0]);//りんご
		System.out.println(data[1]);//みかn
		System.out.println(data[2]);//""
		System.out.println(data[3]);//ばなな
		
		str="りんご,みかん,ばなな";
		//第二引数を使うことで最大分割数を指定
		data=str.split(",",2);
		System.out.println(data.length);//2
		System.out.println(data[0]);//りんご
		System.out.println(data[1]);//みかん,ばなな
		
		str="りんご,みかん,ばなな,,,,";
		data=str.split(",");
		System.out.println(data.length);//3
		System.out.println(data[0]);//りんご
		System.out.println(data[1]);//みかん
		System.out.println(data[2]);//ばなな
		
		str="りんご,みかん,ばなな,,,,";
		data=str.split(",",-1);
		System.out.println(data.length);//7
		System.out.println(data[0]);//りんご
		System.out.println(data[1]);//みかん
		System.out.println(data[2]);//ばなな
		System.out.println(data[3]);//""
		System.out.println(data[4]);//""
		System.out.println(data[5]);//""
		System.out.println(data[6]);//""


		
	}

}

2.split演習
問)
以下の処理を実現せよ
[実行例]
カンマ区切りで数字を入れてね>3,45,10,55,10 [enter]
合計は123
解)

public class SplitLesson2 {

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("カンマ区切りで数字を入れてね>");
		String input=scan.nextLine();
		String[] data=input.split(",");
		int sum=0;
		for(String s:data) {
			int n=Integer.parseInt(s);
			sum+=n;
		}
		System.out.println("合計は"+sum);
		scan.close();
	}
}

3.split演習
問)
[実行例]
カンマ区切りで数字を入れてね>3,45,10,55,10 [enter]
偶数(0),奇数は(1)>1 [enter]
入力された数値の奇数の合計は103
解)

import java.util.Scanner;

public class SplitLesson2 {

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("カンマ区切りで数字を入れてね>");
		String input=scan.nextLine();//"3,45,10,55,10"
		String[] data=input.split(",");
		System.out.print("偶数(0),奇数は(1)>");
		int select=scan.nextInt();
		int sum=0;
		for(String s:data) {
			int n=Integer.parseInt(s);
			if(n%2==0 && select==0  || n%2 !=0 && select==1) {
				sum+=n;
			}
			/*
			if((n%2==0) == (select==0)) {
				sum+=n;
			}
			*/
		}
		System.out.printf("入力された数値の%sの合計は%d",select==0 ? "偶数":"奇数",sum);
	}
}

4.charAt,length練習
問)
文字列を入力してもらいその一文字一文字がすべて同一ならば
そのまま出力せよ。そうでない場合は
「すべて同じではありません」
と出力せよ。
[実行例1]
文字列入れてね>ttt [enter]
ttt
[実行例2]
文字列入れてね>ttnt [enter]
すべて同じではありません

解)

import java.util.Scanner;

public class StrLesson {

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("文字列入れてね>");
		String str=scan.nextLine();
		char c=str.charAt(0);
		int i=1;
		for(;i<str.length();i++) {
			if(str.charAt(i) != c) {
				break;
			}
		}
		System.out.printf("%s", i==str.length() ? str:"すべて同じではありません。");
		scan.close();
	}
}

5.split演習
問)
[実行例]
大きい数値と小さい数値を半角スペース区切りでいれてね>5 -10 [enter]
2つの差は15

解)

import java.util.Scanner;

public class Diff {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.print("大きい数値と小さい数値を半角スペース区切りでいれてね>");
		String str=scan.nextLine();
		String[] data=str.split(" ");
		int diff=Integer.parseInt(data[0])-Integer.parseInt(data[1]);
		System.out.printf("2つの差は%d", diff);
	}
}