您的位置:首页 > 编程语言 > Java开发

弄清楚next(),nextLine(),nextInt()--大总结;

2016-08-02 23:03 561 查看
今天笔试又遇到输入问题,有时候这是个大问题,搞清楚!!!很重要,查了资料网上说的不全,不清楚,特总结。欢迎交流。

1.先总结,说说到底是啥!

next(),nextInt(),nextDouble()....

这些可以认为是一类,首先这些都是“阻塞式的”,意思就是如果遇到空格,Tab,Enter,会继续等待,直到获得相应类型相应的值!!!!!

而且!!焦点不会移动到下一行,仍然处在这一行上。

next()---String,nextInt()----int,nextDouble()----double....

2.例子:

package com.demo;

import java.util.Scanner;

public class NEXT {

public static void main(String[] args) {
Scanner in =  new Scanner(System.in);
System.out.println("请输入一个整数");
while(in.hasNextLine()){
String tString = in.next();
int num = in.nextInt();
//  System.out.println("请输入一个字符串");
//  String str = in.nextLine();
System.out.println("num:"+num);
String str = in.next();
System.out.println("num="+num+",str="+str);
String s3 = in.nextLine();
System.out.println("s3:"+s3);
}
}
}


先自己测试下吧,印象深刻!!!!

下面以一个例子仔细解释下:

例2:

先总结注意点;

如果一开始输入了空格,Tab,Enter,那么会继续等待!!!!直到获取值。
另外一类是nextLine():当使用nextLine()方法时会读取改行从前到的所有的内容,包括换行符,然后把焦点移动到下一行的开头。也就是可以把空格,回车读出值为空!!1

package com.demo;

import java.util.Scanner;

public class NEXT {

public static void main(String[] args) {
Scanner in =  new Scanner(System.in);

while(in.hasNextLine()){
String tString = in.next();
System.out.println(tString);
int num = in.nextInt();

String str = in.nextLine();
System.out.println("num:"+num);

System.out.println("num="+num+",str="+str);
String s3 = in.nextLine();
System.out.println("s3:"+s3);
}
}
}




分析:

当输入1  2(2前有空格)后

String tString = in.next();

把1读入---存储到tString

int num = in.nextInt();
当读到上面时候,有一个空格,阻塞--继续往后读,读到了2,好的光标停止在当前行尾

String str = in.nextLine();
下面执行上面关键的一行,光标现在在结尾,前面的值已经被读走,现在
in.nextLine();
读取包括回车在内的以及其前面存在的值!!!!----为空----光标位置移到下一行首,等待取值!!

所以输出str=空

如果此时再按回车,那么继续往下执行!!

String s3 = in.nextLine();
读取包括回车在内的当前行,仍然为空。

我想你已经明白了!!!

2.总结:

对于数组循环建议使用nextInt()等类型

对于读取一行值然后继续处理--使用nextLine()

实用技巧:读数组--赋值

先给输入输出样例:

输入:

4 4

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

输出

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 

import java.util.Scanner;

public class TestArray {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int row = scanner.nextInt();
int col = scanner.nextInt();
int[][] matrix = new int[row][col];
for (int i = 0; i < row * col; i++) {
matrix[i / col][i % col] = scanner.nextInt();
}

for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
System.out.print(matrix[i][j]+" ");
}
}
}

scanner.close();
}
}

nextLine()样例:求解最后一个单词的长度

输入:abd dc fd f good

输出:4

import java.util.Scanner;
public class Main {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s="";
while(input.hasNextLine()){
s=input.nextLine();
System.out.println(s.length()-1-s.lastIndexOf(" "));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  next nextLine nextInt java