値や文字列を比較
- compareToメソッド
- 戻り値はメソッドの呼び出し元の値(変数1) - 引数の値(変数2)
- 左の値 - 右の値=正: 1
- 左の値 - 右の値=負: -1
- 左の値 - 右の値=0:0
- 日時も比較可能
- compareToIgnoreCaseメソッド:文字列の大文字と小文字を区別しない
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
System.out.println(str2.compareTo(str1)); //1
System.out.println(str1.compareTo(str1)); //0
System.out.println(str1.compareTo(str3)); //32
System.out.println("===");
System.out.println(str1.compareToIgnoreCase(str3)); //0
System.out.println("===");
System.out.println(date1.compareTo(date2)); //-1
System.out.println(date2.compareTo(date1)); //1
System.out.println(date1.compareTo(date1)); //0
}
}
カードゲーム(ITP1-9)
太郎と花子がカードゲームをする。二人はそれぞれn枚のカードを持っており、nターンの勝負を行う。各ターンではそれぞれ1枚ずつカードを出す。カードにはアルファベットからなる動物の名前が書かれており、辞書順で大きいものがそのターンの勝者となる。勝者には3ポイント、引き分けの場合にはそれぞれ1ポイントが加算される。
太郎と花子の手持ちのカードの情報を読み込み、ゲーム終了後のそれぞれの得点を出力するプログラムを作成せよ。
Constraints
- 入力で与えられるnが1000を超えることはない。
- 与えられる文字列の長さは100以下であり、アルファベットの小文字のみを含む。
Input
一行目にカードの数nが与えられる。続くn行に各ターンのカードの情報が与えられる。1つ目の文字列が太郎のカードに書かれている文字列、2つ目の文字列が花子のカードに書かれている文字列である。
Output
1つ目の数字が太郎の得点、2つ目の数字が花子の得点として1行に出力せよ。2つの数字の間に1つの空白を出力せよ。
Sample Input
3
cat dog
fish fish
lion tiger
Sample Output
1 7
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int Taro = 0;
int Hanako = 0;
for (int i = 0; i < a; i++) {
String b = scanner.next();
String c = scanner.next();
if (b.compareTo(c) > 0)
Taro += 3;
else if (b.compareTo(c) < 0)
Hanako += 3;
else {
Taro += 1;
Hanako += 1;
}
}
System.out.println(String.format("%d %d",Taro, Hanako));
}
}