Java的输入 Scanner in=new Scanner(System.in);

java和c++还是有好多不同的地方,需要从头开始认认真真地学

输入数字

输入double
import java.util.Scanner;//输入头文件

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        double d=in.nextDouble();
        System.out.println(d);
    }
}

在这里插入图片描述

输入整型
import java.io.*;
import java.util.Scanner;//输入头文件

public class Main {
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();   //调用in的nextInt函数来读入整型
        int b = in.nextInt();
        System.out.print(a+b+" ");
        System.out.print(a*b+" ");
    }
}

在上面的程序中可以看到一共调用了2次nextInt()函数,所以键盘会等待你输入2个整数。

在这里插入图片描述

如果输入多个整数,它只会取前2个数字。

在这里插入图片描述

注意:in.nextInt() 函数只能接受 int 型,不能输入double或者long等其他类型的数字,否则会报错。

对于其他输入的函数同样,nextDouble(), nextLong(), nextShort(), nextByte(), 都只能输入对应类型的数据,输入其他类型会报错。

输入一个字符

如果你用java做一些比较简单的题,比如说只需要输入一个字符这种,你可能会觉得java里面有nextChar()这个接受单个字符的函数,但事实并不是这样,这样写就会报错。

在这里插入图片描述

正确写法:

import java.io.*;
import java.sql.SQLSyntaxErrorException;
import java.util.*;
import java.util.List;
import java.security.cert.PolicyNode;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        char ch=in.next().charAt(0);//只输入单独一个字符的代码
        System.out.print(ch);
    }
}

这样输入单个字符的原理就是先用 next() 函数读入接下来输入的字符串,然后再用 charAt() 函数取得字符串中的第一个字符,这样就相当于只输入了一个字符。经过亲自输入证明仅仅只输入一个字符,那输出的就是这个字符,如果输入一个字符串,结果输出的是这个字符串的第一个字符。(请看以下截图)

在这里插入图片描述

在这里插入图片描述


输入字符串

输入字符串时要注意,因为Java是大小写严格的,所以String的S必须大写,虽然C++中string是小写的。

import java.io.*;
import java.util.Scanner;//输入头文件

public class Main {
    public static void main(String args[]) {
        Scanner in=new Scanner(System.in);
        String s=in.nextLine();     //用 in 的 nextLine() 函数读入字符串
        System.out.println(s);
    }
}

运行结果:

在这里插入图片描述

判断2个字符串是否相等

String中有一个函数就是判断是否和另一个字符串相等 equals() ,括号中写入要比较的字符串

import java.io.*;
import java.util.Scanner;//输入头文件

public class Main {
    public static void main(String args[]) {
        Scanner in=new Scanner(System.in);
        String s=in.nextLine();
        if(s.equals("fantastic"))  //使用了字符串的函数 equals() 来判断
            System.out.println("极好的,了不起的");
    }
}

运行结果:

在这里插入图片描述

(每次举例子不知道举什么,突然感觉举单词还不错,还可以加深印象,不错不错,一举两得)

Java的字符串要用""双引号引起来,而不是’'单引号

在Java中用英文下的单引号引起来的是一个字符,而不是字符串。
而且用单引号引起来的只能有一个字符,如果有多个字符,就会报错(只看红色的就可以)

在这里插入图片描述
翻译过来就是:字符字面上有太多字符。
但是如果用双引号引起来多个字符是不会报错的。

判断2个字符是否相等可以用==来判断
在这里插入图片描述

输入一维数组

import java.io.*;
import java.util.Scanner;//输入头文件
import java.util.Arrays; //引入数组类

public class Main {
    public static void main(String args[]) {
        Scanner in=new Scanner(System.in);
        int a[]=new int [6];
        for(int i=0;i<6;++i)
            a[i]=in.nextInt();  //依次输入数据
        Arrays.sort(a);   //用数组的函数对数组排序,从小到大
        System.out.println(a[5]+" "+a[0]);//输出数组的最大值和最小值
    }
}

运行结果:

在这里插入图片描述

输入二维数组

代码:(我个人感觉还是看代码来的快,理解的快,一看就能很明白啊,一大堆解释对我来说不能很好的理解,还是看实例快一些)

import java.io.*;
import java.util.Scanner;//输入头文件
import java.util.Arrays;//引入数组类

public class Main {
    public static void main(String args[]) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();//输入行数和列数
        int m=in.nextInt();
        int a[][]=new int[n][m];
        in.nextLine();  //用来读掉回车前的所有字符,不将他们包括在数组的输入中
        for(int i=0;i<a.length;++i){
            for(int j=0;j<a[i].length;++j)
                a[i][j]=in.nextInt();//输入每个元素
        }
        for(int i=0;i<a.length;++i){
            for(int j=0;j<a[i].length;++j)
                System.out.print(a[i][j]+" ");
            System.out.println();
        }
    }
}

看一下运行结果:
2和3分别对应的是n和m,69559是我多输入的,主要是判断in.nextLint()是否可以读掉回车前的所有空格,确实读掉了,69559没有算在数组中的元素。

在这里插入图片描述

如果我们不写 in.nextLint() ,再这样输入,结果如下:

在这里插入图片描述
它没有忽略699559 (这里举的数不一样,但是没关系,道理一样),而最后一个5已经超出二维数组的范围了,所以没有读到。

Java的数组中都有一个 length() 函数,可以直接求出数组中元素的个数,这在C++中是没有的,有这个会方便一些。



输入多组数据

法1:

import java.io.*;
import java.util.Scanner;//输入头文件
import java.util.Arrays;//引入数组类

public class Main {
    public static void main(String args[]) {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){   //只要一直输入,循环就不会停止
            int a=in.nextInt();
            int b=in.nextInt();
            System.out.println(a+b);
        }
    }
}

处理方法:按 ctrl+D 直接退出循环。(在C++中用while不断输入时是用 ctrl+Z 退出循环)

在这里插入图片描述

如果while中这么写,即使while中是 hanNextInt() ,在循环内部也可以输入Double类型数据(short类型也可以),最后输出的是double类型的数据,强制类型转换了,转换成精度更高的数据类型。

while(in.hasNextInt()){
            int a=in.nextInt();
            double b=in.nextDouble();
            System.out.println(a+b);
        }

在这里插入图片描述

法2:
遇到某个符号结束输入

import java.io.*;
import java.util.Scanner;//输入头文件
import java.util.Arrays;//引入数组类

public class Main {
    public static void main(String args[]) {
        Scanner in=new Scanner(System.in);
        while(!in.hasNext("-1")){  //当输入的第一个数是-1时则退出循环,如果第2个数是-1,不会退出循环
            int a=in.nextInt();
            int b=in.nextInt();
            System.out.println(a+b);
        }
    }
}

在这里插入图片描述



<think>好的,我现在需要解释用户提供的Java代码:Scanner scanner = new Scanner(System.in);。首先,我应该从基础开始,确保用户理解每个部分的作用。 首先,Scanner类是什么?它是Java中的一个工具类,用于解析输入数据,可以从不同的输入源读取数据,比如文件、字符串,这里用的是System.in,也就是标准输入流,通常指键盘输入。需要提到java.util包,所以用户可能需要导入这个包。 接下来是对象的创建。new关键字用来创建Scanner的实例,构造函数的参数是System.in,这样scanner对象就会从控制台读取输入。用户可能想知道为什么需要这样做,所以可以举例说明,比如用nextInt()读取整数,nextLine()读取字符串等。 然后,可能需要提到常见的异常处理,比如InputMismatchException,如果输入类型不匹配会抛出这个异常,所以建议使用try-catch块来增强健壮性。另外,使用完毕后应该调用scanner.close()来释放资源,避免资源泄漏。 用户可能是刚开始学习Java,所以需要强调基本概念,比如对象实例化、输入流、方法调用等。同时,给出一个简单的例子,比如读取用户输入的名字和年龄,并打印出来,这样更直观。还要注意nextInt()和nextLine()混用时可能出现的换行符问题,提醒用户注意处理。 最后,总结Scanner的作用和重要性,在控制台程序中的应用场景,以及正确的使用方法和注意事项。确保语言简洁明了,避免使用过于专业的术语,让初学者也能理解。</think>`Scanner scanner = new Scanner(System.in);` 是 Java 中用于从控制台读取用户输入的标准代码。以下是对它的分步解释: --- ### 1. **Scanner 类** - **作用**:Java 的 `Scanner` 类(位于 `java.util` 包中)用于解析输入数据,支持从键盘、文件、字符串等多种来源读取数据。 - **需要导入**:使用前需导入包: ```java import java.util.Scanner; // 必须添加 ``` --- ### 2. **System.in** - **含义**:`System.in` 是 Java 的标准输入流,默认对应键盘输入。 - **用途**:通过 `System.in`,`Scanner` 可以监听用户在控制台输入的内容。 --- ### 3. **创建 Scanner 对象** - **语法**:`Scanner scanner = new Scanner(System.in);` - `new` 关键字:创建 `Scanner` 类的实例。 - `System.in` 作为参数:告诉 `Scanner` 从键盘读取输入。 - `scanner` 是变量名(可自定义)。 --- ### 4. **常用方法** - 通过 `scanner` 对象调用方法读取输入: ```java int num = scanner.nextInt(); // 读取整数 double d = scanner.nextDouble(); // 读取浮点数 String s = scanner.nextLine(); // 读取一行文本 boolean b = scanner.nextBoolean();// 读取布尔值 ``` - **注意**:输入类型需与方法匹配(如输入字母调用 `nextInt()` 会抛出异常)。 --- ### 5. **示例代码** ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入你的名字:"); String name = scanner.nextLine(); System.out.println("你好," + name + "!"); scanner.close(); // 关闭 Scanner } } ``` - **输出**: ``` 请输入你的名字:小明 你好,小明! ``` --- ### 6. **注意事项** - **资源释放**:用完后调用 `scanner.close()` 释放资源。 - **输入验证**:建议用 `hasNextXxx()` 方法预判输入类型(如 `hasNextInt()`)。 - **换行符问题**:`nextInt()` 后接 `nextLine()` 时,需额外处理换行符([原因](https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint))。 --- ### 总结 `Scanner scanner = new Scanner(System.in);` 是 Java 控制台程序的基础代码,用于实现用户交互。掌握其用法后,可以轻松实现输入功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_房似锦_

好心人哇!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值