关于Scanner的一点理解。

今天敲了个关于华氏温度和摄氏温度转换的代码,如下:

package com.yxc;

import java.util.Scanner;

public class Hera {
public static void main(String[] args) {
    //要保证输入的数字和单位间有空格
    System.out.println("请输入温度值(n  C|F):  ");
    Scanner sca = new Scanner(System.in);
    int d = sca.nextInt();//输入的数字
    char c = sca.next().trim().charAt(0);//输入的单位

    if(c=='c'||c=='C') {
        double f_temp = 9*d/5.0+32;
        //对double四舍五入
        int f_temp_int = (int)(f_temp+0.5);
        System.out.println("转换前的温度值是:"+d+" "+"C");
        System.out.println("转化后的温度值是:"+f_temp_int+"  "+"F");
    }
    else {
        if(c=='f'||c=='F') {
            double c_temp = 5*(d-32)/9.0;
            //对double四舍五入
            int c_temp_int = (int)(c_temp+0.5);
            System.out.println("转换前的温度值是:"+d+" "+"F");
            System.out.println("转化后的温度值是:"+c_temp_int+"  "+"C");
        }
        else {
            System.out.println("你输入对是个啥?单位都不正确");
        }
    }
}
}

里面用到了控制台Scanner

我就比较好奇,为什么其中的char c = sca.next().trim().charAt(0);

是可以这样使用的?

经过百度

得到以下启发:

       Scanner是一个类,next()是一个方法,charAt()也是方法

       next().charAt(0)结构分析?
       Scanner scan=new Scanner(System.in);
       String s=scan.next(); //返回一个String 对象
       char c= s.charAt(0) ; //调用String 对象的charAt() 方法,该方法返回char
        //最重要的是理解java对象,在java中 几乎一切皆对象;

      另外的:这是百度的回答

        scanner可以允许输入多行,
        next() 每次取到一个间隔符前面的数据 如: 输入 a b c 取值应该是a,因为a后面有空格
        nextLine() 每次取一个换行符前面的数据 如:输入 a b c 回车,取值 就是a b c
        nextInt() 是取next() 然后把字符串解析成一个int数字。
        hasNextInt() 是判断下次搜索调用next()是否可以得到一个可以安全解析成int的字符串。
        如果已经到达输入的结尾,或者下一个next()的返回值不能解析为一个数字,即不符合数字的格式,那么返回发false

       但是经过我的实验,next()一旦输入带有空格是会报错的//补充:报错是因为下一个输入的格式不对,如果下一个输入正确,比如下一个是int型,我输入a 空格 2 这样是可以的,空格将作为分隔符!!!

     nextInt()也不会转换成int而是必须定义和输入int,这个输入字符类型真的会报错

实验代码如下:

package com.yxc;

import java.util.Scanner;

public class Isis {
public static void main(String[] args) {
	Scanner sca = new Scanner(System.in);
	String text = sca.nextLine();
	System.out.println(text);
	String text2 = sca.next();
	System.out.println(text2);
    int text3 = sca.nextInt();
    System.out.println(text3);
	boolean text4 = sca. hasNextInt();//判断下次搜索调用next()是否可以得到一个可以安全解析成int的字符串。
	//如果已经到达输入的结尾,或者下一个next()的返回值不能解析为一个数字,即不符合数字的格式,那么返回发false
	
	System.out.println(text4);
}
}

  

猜你喜欢

转载自blog.csdn.net/XueDinge_Cat/article/details/81081198