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

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

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(" "));
        }    
    }
}



  • 23
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值