文字列と数値データの相互変換


d.readLine()のように読み込んだデータは文字列データになっている.したがっ て,キーボードから100と入力しても得られるのは"100"という文字列で数字の 100ではない.文字列からint型へ変換するには,Integer.parseInt(正確には, Integerクラス のメソッド parseInt)を,String型からdouble型への変換は, Double.parseDouble(正確には, Doubleクラス メソッド parseDouble)を呼び出す.
class ParseNumber {
  public static void main(String[] args){
    String s="1000";
    int i=Integer.parseInt(s)+1;
    System.out.println(i);
    String s1="1000.1";
    double d=Double.parseDouble(s1) * 2.0;
    System.out.println(d);
  }
}

Integer.parseInt("(1+2)") と実行して,3になってくれるなら便利だが, そのようにはなっていない.
逆に,int, double型からString型へ変換するには,Integer.toString, Double.toStringなどのメソッドが使える.
  int i=10;
  double d=20.1;
  String s1=Integer.toString(i);
  String s2=Double.toString(d);
もちろん,
  int i=10;
  String s=""+i;
のように,空の文字列に連結するする方法も有効である.
Java言語ではStreamTokenizer を使って入力文字の種類などの応じてトークンごとに切り分けて入力すること もできる.ただし,数値は必ず浮動小数点数(double)として扱うなど,いろいろ問題がある.
import java.io.*; // 入力に関するクラスを使う時は必要
class YourName1{
   // throws IOException で内部で入出力エラーが起きる可能性があることを示す
  public static void main(String[] args) throws IOException{
  // 入力をするためには,System.inからStreamTokenizerを作る
    StreamTokenizer st=new StreamTokenizer(new InputStreamReader(System.in));
    System.out.println("名字を入力してください> ");
    while(st.nextToken() != StreamTokenizer.TT_WORD){
      System.out.println("名字を入力してください> ");
    }
    // 文字列型(String)の変数 family を定義して,トークンの文字列を入れる.
    String family=st.sval;
    System.out.println("年齢を入力してください> ");
    while(st.nextToken() != StreamTokenizer.TT_NUMBER){
      System.out.println("名字を入力してください> ");
    }
    // 実数型の変数 age を定義して,トークンの数値入れる.
    double age=st.nval;
    // 表示する.
    System.out.println(family+"さんは10年前は"+(age-10)+"歳でした");
  }
}

次に進む