型キャスト
- char型は暗黙的にint型やdouble型にキャストできる
- char型のラッパークラスCharacter型はUnicode文字表現
- ”1”の場合U+0031(16進法)49(10進法)
- char型の”1”が暗黙的にint型にキャストされた場合”49”が出力される
- 参考にさせていただきました
public class Main {
public static void main(String[] args) {
char c = '1';
//暗黙的にint型、double型にキャスト
int i = c;
double d = c;
System.out.println(c + "をint型へキャスト→ " + i);
System.out.println(c + "をdouble型へキャスト→ " + d);
//引数がdouble型のメソッドに、char型を引数として渡す
doubleMethod(c);
}
static void doubleMethod(double d) {
System.out.println("double型→ " + d);
}
}
1をint型へキャスト→ 49
1をdouble型へキャスト→ 49.0
double型→ 49.0
数字の和(ITP1-8)
与えられた数の各桁の和を計算するプログラムを作成して下さい。
Input
複数のデータセットが入力として与えられます。各データセットは1つの整数 x を含む1行で与えられます。
x は 1000 桁以下の整数です。
x が 0 のとき入力の終わりとします。このデータセットに対する出力を行ってはいけません。
Output
各データセットに対して、x の各桁の和を1行に出力して下さい。
- この例での
ans += line.charAt(i)-‘0’;
で暗黙的にキャストをしている-
line.charAt(i)
はcharを返す -
ans
はintegerなので、integerに変換する
-
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int ans;
while(true){
String line = br.readLine();
if(line.length() == 1 && line.equals("0")){
break;
}else{
ans= 0;
for(int i = 0; i < line.length(); i++){
ans += line.charAt(i)-'0';
/*型キャストの確認
System.out.println("line.charAt(i) "+line.charAt(i));
System.out.println("line[i] "+(int)line.charAt(i));
System.out.println("(int)'0' "+(int)'0');
*/
}
System.out.println(ans);
}
}
}
}