输入输出
输出
Java中的输出比较简单,可以直接调用System类的out对象的对应函数(print,println)
println 输出并换行
print 输出不换行
int a=5;
System.out.print(a);//输出变量a的值
System.out.print("123");//输出字符串
System.out.print("123"+a);//混合输出字符串和变量值 1235
System.out.print("你的等级为:"+a);
格式化输出
占位符%
如果要把数据显示成我们期望的格式,就需要使用格式化输出的功能。格式化输出使用System.out.printf()
,通过使用占位符%?
,printf()
可以把后面的参数格式化成指定格式:
占位符 | 说明 |
---|---|
%d | 格式化输出整数 |
%x | 格式化输出十六进制整数 |
%f | 格式化输出浮点数 |
%e | 格式化输出科学计数法表示的浮点数 |
%s | 格式化字符串 |
import java.util.Scanner;
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);//创建Scanner对象
System.out.print("输入姓名:");
String name=scanner.nextLine();
System.out.print("年龄:");
int age=scanner.nextInt();
System.out.printf("姓名:%s 年龄:%d",name,age);
}
输入
Scanner类
Java5特征
import java.util.Scanner;
Scanner s = new Scanner(System.in);
创建Scanner
对象并传入System.in
。System.out
代表标准输出流,而System.in
代表标准输入流。直接使用System.in
读取用户输入虽然是可以的,但需要更复杂的代码,而通过Scanner
就可以简化后续的代码。
Scanner
会自动转换数据类型,因此不必手动转换。
int x=s.nextInt();
double y=s.nextDouble();
String z=s.next();
String a=s.nextLine();
获得字符串
next()方法
Scanner s =new Scanner(System.in);
System.out.println("你好");
String x=s.next();
System.out.println(x);
输入“你好 哈哈” 只会输出你好
next会忽略空格后的所有字符
nextLine()方法
Scanner s =new Scanner(System.in);
System.out.println("你好");
while(s.hasNextLine()) {
String x=s.nextLine();
System.out.println(x);
}
输入“你好 哈哈” 输出“你好 哈哈”
next()与nextLine()区别
next | nextLine |
---|---|
读取到有效字符后才可以结束输入(Enter不作结束符) | 以Enter为结束符,nextLine()方法返回的是输入回车之前的所有字符。 |
有效输入前的空格会舍弃 | 不会舍弃 |
有效输入后的空白作为分隔符或结束符 | 读取Enter前的一整行,包括空白 |
Scanner s =new Scanner(System.in);
System.out.println("你好");
while(s.hasNext()) {
String x=s.next();
System.out.println(x);
}
//空白作next分隔符
//输入 1 2 3
//输出 1
// 2
// 3
注意next与nextLine的混用问题
String x1=s.next();
String x2=s.nextLine();
System.out.println("x1:"+x1+"x2:"+x2);
/**case1:
//输入:阿波次的 额佛歌
//输出:x1:阿波次的x2: 额佛歌 (x2会读入x1后面的空格)
/**case2:
//输入:阿巴阿巴(回车符)
System.out.println(x2=="");
//输出:x1:阿巴阿巴x2:
//true
总结:nextLine()
会把nextInt()
,next()
,nextDouble()
,nextFloat()
等方法的结束换行符或分隔空格作为字符串读入,导致nextLine在键盘输入字符前已读入数据,若读入的为换行符,则nextLine读取到空字符,若为分隔的空格,nextLine读取到空格及其后的内容,直到出现结束换行符。
获取整形、浮点等其他类型的数据
输入前最好先使用hasNextXX()
方法进行验证
用if判断 则输入不是整形时不会出错,但也意味着if条件语句的结束
这种情况,空格也是作为分隔符
int sum=0;
Scanner s =new Scanner(System.in);
System.out.println("求和请输入(输入非数字结束):");
while(s.hasNextInt()) {
int x= s.nextInt();
sum+=x;
// System.out.println("输入的数为"+x);
}
System.out.print("和为:"+sum);