当前位置:   article > 正文

Scanner用法_scanner什么方法用于循环读取数据判断

scanner什么方法用于循环读取数据判断

Scanner用法

Java中要想输入时便要用到Scanner
首先在使用之前导入util包
要想通过控制台进行输入,首先要构造一个Scanner对象,它附属于"标准输入流 Scanner in = new Scanner(System.in);
现在我们就可以使用Scanner类的各种方法了

1、输入整数、字符串数组

第一行输入n, m

第二行输入n个整数

第三行输入m个字符串

//导入包
import java.util.Scanner;
import java.util.Arrays;
 
public class MyScanner {
 
	public static void main(String[] args) {
		
		//创建对象
		Scanner sc = new Scanner(System.in);		
		System.out.println("输入数据:");	
		//多行输入
		int n = sc.nextInt();
		int m = sc.nextInt();
		int[] arr = new int[n];	
		String[] str = new String[m];
		
		//int等基本数据类型的数组,用nextInt(),同行或不同都可以
		for(int i=0; i<n; i++) {
			arr[i] = sc.nextInt();
		}
		//String字符串数组, 读取用next(),以空格划分
		for(int i=0; i<m; i++) {
			str[i] = sc.next();
		}
		
        //调用方法进行操作
		TestSc(n, m, arr);
		TestStr(str);
		
		System.out.println("Test01 End");
		
		//关闭
		sc.close();
	}
	
	public static void TestSc(int n, int m, int[] arr) {
		System.out.println("数据n:" + n + ", 数据m:" + m);
		System.out.println(Arrays.toString(arr));
	}
	
	public static void TestStr(String[] str) {
		System.out.println(Arrays.toString(str));
	}
		
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

若输入的字符串中想要包含空格,使用scanner.nextLine()换行后用scanner.nextLine()进行读入,见情形7.

2、输入二维数组

第一行输入n, m

第二行开始输入二维数组。

import java.util.Arrays;
import java.util.Scanner;
 
public class MyScanner2 {
 
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);		
		System.out.println("输入数据:");	
 
		//二维数组
		int n = sc.nextInt();
		int m = sc.nextInt();
		int[][] arr2 = new int[n][m];	
		System.out.println("Test02 输入二维数组数据:");
 
		//可以直接读入
		for(int i=0; i<n; i++) {
			for(int j=0; j<m; j++) {
				arr2[i][j] = sc.nextInt();
			}
		}
 
		TestSc(n, m, arr2);
		//关闭
		sc.close();
	}
	
	public static void TestSc(int n, int m, int[][] arr) {
		System.out.println("数据n:" + n + ", 数据m:" + m);
		for(int i=0; i<n; i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
		System.out.println("数组行数: arr.length= "+ arr.length);
		System.out.println("数组列数: arr[0].length= "+ arr[0].length);
	}
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

3、输入字符串

输入字符串,用空格隔开。
next()和nextLine()区别。

next():
1、一定要读取到有效字符后才可以结束输入.
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next()不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。

import java.util.Scanner;
/*
 *next()读取到空白停止,在读取输入后将光标放在同一行中。
 *nextLine()读取到回车停止 ,在读取输入后将光标放在下一行。
 */
 

```java
public class MyScanner3 {
 
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);		
		System.out.println("输入字符串:");		
		
		//next():只读取输入直到空格。
		String str = sc.next();
 
		//nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号
		String str2 = sc.nextLine();
 
		System.out.println("str:" + str);
		System.out.println("str2:" + str2);
		
		//关闭
		sc.close();
	}
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

4、输入字符串分割为数组

先用scanner.nextLine()读入字符串,再将字符串分割为字符数组或字符串数组。

import java.util.*;
 
public class MyScanner4 {
 
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);	
		System.out.println("输入字符串数组:");
		
		String str;
		str = sc.nextLine();
		
		char[] ch = new char[str.length()];
		for(int i=0; i<str.length(); i++) {
			//用charAt();进行定位分隔
			ch[i] = str.charAt(i);
			System.out.println(ch[i] + " ");
		}
		System.out.println("END");
		
		//读入字符串后,用空格分隔为数组
		String[] strs = str.split(" ");
		System.out.println(Arrays.toString(strs));
 
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

5、连续输入数字和字符串

区别于情形1,对于不能采用for循环的方式获取String。采用情形5,6用来处理。

采用while(scanner.hasNext()) 循环,实现连续输入。

格式:数字,空格,字符串。

或: 数字,回车,字符串

import java.util.Scanner;
 
public class MyScanner5 {
 
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		while(sc.hasNext()) {					
			int n = sc.nextInt();
			String str = sc.next();
			Tes(n, str);
		}
			
		sc.close();
	}
	
	public static void Tes(int n, String str) {
		System.out.println("n = " + n);
		System.out.println("str = " + str);	
		System.out.println("str.length = " + str.length());
	}
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

6、换行输入数字和字符串

也采用scanner.nextLine(),将光标移到下一行。再继续读入字符串。

第一行输入整数n,m,第二行开始输入字符串。或

第一行输入整数n,第二行输入m,第三行开始输入字符串。

import java.util.*;
 
public class MyScanner6 {
 
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		
		//注意!!!光标换到下一行
		sc.nextLine();
		
		String s = sc.nextLine();
		String str = sc.nextLine();
		
		System.out.println("n = " + n + " , m = " + m);
		System.out.println("s = " + s);
		System.out.println("str = " + str);
				
		sc.close();
	}
 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

7、换行输入数字和字符串(需要包含空格)

采用scanner.nextLine(),将光标移到下一行。再继续读入字符串。

第一行输入n,

第二行开始输入n行字符串,字符串中包含空格。

import java.util.Scanner;
public class MyScanner7 {
 
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		String[] strs = new String[n]; 
		
		sc.nextLine();
		
		for(int i=0; i<n; i++) {
			String str = sc.nextLine();
			strs[i] = str;			
		}
		
		Tes2(strs);
		System.out.println("End");		
		sc.close();
	}
	
	
	public static void Tes2(String[] strs) {
		for(int i=0; i<strs.length; i++) {
			String str = strs[i];
			System.out.println(str);
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

8.判断接收方法

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/207168
推荐阅读
相关标签
  

闽ICP备14008679号