Java中Scanner使用方式:单行/多行输入

目录
  • 问题
  • 最好解决的情况
  • 单行输入多个参数
  • 多行输入多个参数,每行参数个数不定

问题

解决这种情况下的Scanner输入:单行,多行,数值,字符串

  • 平时写程序一般不用Scanner,线上笔试的时候,各大公司热衷于Scanner输入。
  • 平时用LeetCode刷题也不会用到,结果多次在笔试时候卡在Scanner,特来总结一波。

最好解决的情况

  • 多行输入元素,其中第一行几个数字表示下面几行的个数。

以三行输入为例,第一行输入两个数字m,n,分别表示数组num1和num2的长度,第二行和第三行输入num1和num2的元素,以空格分隔。

// 输入如下
3 4
10 2 3 
11 4 5 6

程序如下:

import java.util.Arrays;
import java.util.Scanner;
public class myScanner {
    Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("输入:");
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        int[] num1 = new int[m];
        int[] num2 = new int[n];
        // 换成其他数据类型也一样,其他数值类型就修改int跟nextInt就可以了,
        //String就把nextInt()换成next()
        for(int i = 0; i < m; i ++) {
            num1[i] = sc.nextInt();  // 一个一个读取
        }
        for(int i = 0; i < n; i ++) {
            num2[i] = sc.nextInt();
        }
        System.out.println("输出:");
        System.out.println(Arrays.toString(num1));
        System.out.println(Arrays.toString(num2));
    }
}

运行示例:

换成其他数据类型也一样,其他数值类型就修改int跟nextInt就可以了,String就把nextInt()换成next()

单行输入多个参数

  • 在一行输入多个参数

以空格(也可用其他的符号,不重要)为分割。

// 输入如下
ABB CCC DDD  EEE 123 435

程序如下:

import java.util.Arrays;
import java.util.Scanner;
public class myScanner {
    Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("输入:");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();  // 读取一行
        System.out.println("输出:");
        System.out.println(str);
        String[] strIn = str.trim().split(" ");  // 以空格分割
        System.out.println(Arrays.toString(strIn));
    }
}

读出来的只能是字符串,如果想全部为数字,需要将读出来的字符串强行转换为数字(parseInt、parseLong等),运行示例如下:

多行输入多个参数,每行参数个数不定

  • 每行输入不等数量的参数

这种情况下,或者可以从题干直接确定行数,或者能够从输入的第一行输入的某个参数确定下面还有几行。

以后者为例进行说明,假设第一行输入m,n,m表示后面有m行,n表示每行最多有n个(可用来截断某一行多输入的参数,不详细分析了)。

// 输入如下
3 4
AA bcd 123 54
AA BB
A B C

程序如下:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class myScanner {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		System.out.println("输入:");
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		sc.nextLine();  // 很重要,跳到第二行
		// 若直接确定行数,注释掉上面两行,加入下面一行
		// int m = 3;
		String[] strArr = new String[m];
		// 从第二行开始读取
		for(int i = 0; i < m; i++) {
			strArr[i] = sc.nextLine();
		}
		System.out.println("输出:");
		System.out.println(Arrays.toString(strArr));
		ArrayList<String[]> strToOne = new ArrayList<String[]>();
		for(int i = 0; i < m; i ++) {
			String[] tmp = strArr[i].trim().split(" ");
			strToOne.add(tmp);
		}
		System.out.println(strToOne);
		// 形象点显示
		System.out.print("[");
		for(int i = 0; i < strToOne.size(); i++) {
			System.out.print(Arrays.toString(strToOne.get(i)));
			if(i != strToOne.size()-1)
				System.out.print(", ");
		}
		System.out.print("]");
	}
}

运行结果如下:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 在Java中Scanner的用法总结

    最近在做OJ类问题的时候,经常由于Scanner的使用造成一些细节问题导致程序不通过(最惨的就是网易笔试,由于sc死循环了也没发现,导致AC代码也不能通过...),因此对Scanner进行了一些总结整理. Scanner类简介 Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序. 它是以前的StringTokenizer和Matcher类之间的某种结合.由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分. 于是可以结合使用

  • Java之键盘输入语句Scanner解读

    目录 键盘输入语句 1. 介绍 2. 步骤 3. 案例演示 Java的Scanner报错 正确姿势 键盘输入语句 1. 介绍 在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取. Input.java , 需要一个 扫描器(对象), 就是 Scanner 2. 步骤 导入该类的所在包, java.util.* 创建该类对象(声明变量) 调用里面的功能 3. 案例演示 要求:可以从控制台接收用户信息,[姓名,年龄,薪水] //演示接受用户的输入 //步骤 //Scanner类 表示 简

  • java 键盘输入的多种实现方法

    实例程序:1.利用 Scanner 实现从键盘读入integer或float 型数据 复制代码 代码如下: //import java.io.*;import java.util.*;public class InputTest{public static void main(String[] args){  Scanner in = new Scanner(System.in);    //Scanner类  System.out.println("Please input a float n

  • Java中Scanner使用方式:单行/多行输入

    目录 问题 最好解决的情况 单行输入多个参数 多行输入多个参数,每行参数个数不定 问题 解决这种情况下的Scanner输入:单行,多行,数值,字符串 平时写程序一般不用Scanner,线上笔试的时候,各大公司热衷于Scanner输入. 平时用LeetCode刷题也不会用到,结果多次在笔试时候卡在Scanner,特来总结一波. 最好解决的情况 多行输入元素,其中第一行几个数字表示下面几行的个数. 以三行输入为例,第一行输入两个数字m,n,分别表示数组num1和num2的长度,第二行和第三行输入nu

  • java 中DH的方式实现非对称加密的实例

    java 中DH的方式实现非对称加密的实例 实现代码: package com.sahadev; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.X509Enco

  • Java中Scanner类与BufferReader类的不同点(非常详细)

    java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本. 下面是两个类的不同之处: 当nextLine()被用在nextXXX()之后,用Scanner类有什么问题 尝试去猜测下面代码的输出内容: // Code using Scanner Class import java.util.Scanner; c

  • java 中RSA的方式实现非对称加密的实例

    java 中RSA的方式实现非对称加密的实例 RSA通俗理解: 你只要去想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密:同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证. 实现代码: package com.sahadev; import java.security.KeyFactory; import java.security.KeyPair; import java.se

  • 详解java中通过post方式访问后台服务器

    最近在学习java中通过post方式访问后台服务器,那么今天也算个学习笔记吧! 首先,上代码: Runnable payRunnable = new Runnable() { @Override public void run() { try { HashMap<String, String> payParamMap = new HashMap<String, String>(); payParamMap.put("canshu" ,"woshican

  • Java中map遍历方式的选择问题详解

    1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率.那么实际情况如何呢? 为了解遍历性能的真实差距,包括在遍历key+value.遍历key.遍历value等不同场景下的差异,我试着进行了一些对比测试. 2. 对比测试 一开始只进行了简单的测试,但结果却表明k

  • Java中5种方式实现String反转

    这里介绍Java中5中实现String反转的方式. 一.数组实现String反转 //数组实现String反转 public String reverseByArray(){ if(str == null || str.length() == 1){ return null; } char[] ch = str.toCharArray();//字符串转换成字符数组 for(int i = 0 ; i < ch.length/2 ; i++){ char temp = ch[i]; ch[i] =

  • 浅谈Java中复制数组的方式

    在Java里面,可以用复制语句"A=B"给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组:如果一个数组发生改变,那么引用同一数组的变量也要发生改变.         以下是归纳的 java 中复制数组的方法:         (1) 使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点         (2) 使用clone方法,得到数组的值,而不是引用,不能复制指定元素,灵活性差一点         (3) 使

  • Java中的数组排序方式(快速排序、冒泡排序、选择排序)

    1.使用JavaApi文档中的Arrays类中的sort()进行快速排序 复制代码 代码如下: import java.util.Arrays; public class TestOne{ public static void main(String [] args){ int [] array={2,0,1,4,5,8}; Arrays.sort(array);//调用Arrays的静态方法Sort进行排序,升序排列 for(int show:array){ System.out.printl

随机推荐