[Java初学]Java中的输入输及next与nextLine混用的问题

输入输出

输出

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.inSystem.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()区别
nextnextLine
读取到有效字符后才可以结束输入(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);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `next()` 方法用于读取下一个单词,而 `nextLine()` 方法用于读取整行文本。在使用 `next()` 读取单词后,如果在单词后面还有其他字符(包括空格和换行符),这些字符将不会被读取。而在使用 `nextLine()` 方法读取文本后,整行文本都会被读取,包括空格和换行符。 ### 回答2: Java Scanner类是用于将输入的文本转换为Java程序可以使用的字符数据或数字数据的常用类。它可以读取标准输入、文件、网络套接字等各种输入流。在使用Scanner类时,可以使用next()方法和nextLine()方法来读取输入的文本数据,这两种方法的区别如下: 1. next():读取输入的下一个标记(以空格为分隔符),返回一个字符串。例如,如果输入包含“Hello world”,则调用next()方法会返回“Hello”。 在使用next()方法时,要注意以下几点: (1) 如果输入没有下一个标记,那么next()方法会抛出NoSuchElementException异常; (2) next()方法只能读取一个标记,不能读取整行文本; (3) 如果输入存在换行符(\n),则next()方法会把换行符当作标记的一部分而返回。 2. nextLine():读取输入的下一行文本,返回一个字符串。例如,如果输入包含“Hello world\nChina”,则调用nextLine()方法会返回“Hello world”。 在使用nextLine()方法时,要注意以下几点: (1) nextLine()方法会读取整行文本,包括换行符; (2) 如果输入没有下一行文本,那么nextLine()方法会抛出NoSuchElementException异常; (3) nextLine()方法可以读取空行。 因此,在使用Scanner类时,根据需要选择合适的方法来读取输入的文本数据。如果需要读取整行文本,则使用nextLine()方法;如果需要读取单个标记,则使用next()方法。同时,需要注意的是,在使用Scanner类时,要根据输入的具体内容选择合适的分隔符,以防止读取错误。 ### 回答3: Java的Scanner类是一个用于读取用户输入和文件输入的类。在Scanner类,有两种不同方法来读取输入,分别是next()和nextLine()。 next()方法用于读取输入的下一个单词(以空格为分隔符),并将其作为字符串返回。例如,如果用户输入“Hello World”,则next()方法只会返回“Hello”,因为空格后面的“World”会被忽略掉。 nextLine()方法用于读取输入的整行文本,并将其作为字符串返回。例如,如果用户输入“Hello World”,则nextLine()方法会返回整个字符串“Hello World”。 需要注意的是,当用户使用Scanner类来读取输入时,Scanner会将输入缓存在内存,直到达到指定的分隔符(默认情况下是空格或换行符)或读取整行(使用nextLine()方法)。因此,在读取输入之前必须清空Scanner的缓冲区,以免读取到不正确的数据。 通常情况下,如果你需要读取整行文本,应该使用nextLine()方法。但是,如果你只需要读取一个单词,或者需要读取一行文本的第一个单词,就应该使用next()方法。 总之,Java Scanner类的next()方法和nextLine()方法都列于接收用户输入。next()方法用于读取单个单词,而nextLine()方法用于读取整行文本。在使用Scanner类读取输入之前一定要清空缓冲区,以免读取到不正确的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值