精华内容
下载资源
问答
  • java从控制台输入数据
    2021-03-06 18:58:09

    一、使用标准输入串System.in

    //System.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字

    //System.in.read()返回一个整数

    //必须初始化

    //int read = 0;

    char read = '0';

    System.out.println("输入数据:");

    try {

    //read = System.in.read();

    read = (char) System.in.read();

    }catch(Exception e){

    e.printStackTrace();

    }

    System.out.println("输入数据:"+read);

    二、使用Scanner取得一个字符串或一组数字

    System.out.print("输入");

    Scanner scan = new Scanner(System.in);

    String read = scan.nextLine();

    System.out.println("输入数据:"+read);

    /*在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得用户输入。Scanner的next()方法用以取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转换成布尔型。*/

    三、使用BufferedReader取得含空格的输入

    //Scanner取得的输入以space, tab, enter 键为结束符,

    //要想取得包含space在内的输入,可以用java.io.BufferedReader类来实现

    //使用BufferedReader的readLine( )方法

    //必须要处理java.io.IOException异常

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in ));

    //java.io.InputStreamReader继承了Reader类

    String read = null;

    System.out.print("输入数据:");

    try {

    read = br.readLine();

    } catch (IOException e) {

    e.printStackTrace();

    }

    System.out.println("输入数据:"+read);

    更多相关内容
  • Java从控制台输入数据

    千次阅读 2017-08-13 13:19:23
    Java控制台输入数据主要使用java.util.Scanner类 Scanner介绍:1)JDK5.0开始,java.util包中增加了Scanner类, 它是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。 把所输入的内容传给...

    Java中控制台输入数据主要使用java.util.Scanner类
    Scanner介绍:

    1)从JDK5.0开始,java.util包中增加了Scanner类,
    它是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
    把所输入的内容传给Scanner,作为扫描对象。
    如果要获取输入的内容,则只需要调用Scanner的nextLine()等方法即可。

    2)Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符

    3)Scanner多个输入时,可以按空格键或回车键输入下一个数据,最后按回车键结束输入

    4)Scaner的几个方法:
    delimiter()
    返回此 Scanner 当前正在使用的匹配分隔符 Pattern。
    useDelimiter(String pattern)
    设置Scanner 新的分隔符pattern
    hasNext()
    判断当前扫描位置后是否还存在数据,存在返回true,否false
    其他方法等具体查看API
    代码演示一、:
    输入字符串、整数等常见输入

    public static void testScanner() 
    {
        Scanner scanner = new Scanner(System.in);
    //  String str = scanner.nextLine();    //一次输入一行
        String str = scanner.next();
        int i = scanner.nextInt();
        System.out.println("字符串:"+str+", 整数:"+i);
        scanner.close();
    
        Scanner s = new Scanner("12 45 sd fd,gd 5445 r.tg 46,64|sd");
    //  s.useDelimiter(",");    //以“,”作为分隔符
    //  s.useDelimiter("\\|");  //以“|”作为分隔符
        s.useDelimiter(" |,|\\.|\\|");//使用空格或逗号或点号或“|”作为分隔符
        while(s.hasNext()){
            System.out.println(s.next());
        }
        s.close();
    }
    控制台:
    dfsa 4654   (<--输入)
    字符串:dfsa, 整数:4654
    12
    45
    sd
    fd
    gd
    5445
    r
    tg
    46
    64
    sd

    代码演示二、:
    多行数据输入并获取(输入0退出)

    public static void testManyInput()
    {
        String str1;
        String str2;
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            str1 = sc.nextLine();
            if(str1.equals("0")){
                break;
            }
            str2 = sc.nextLine();
            String[] s1 = str1.split(" ");
            for (String string : s1) {
                System.out.print(string+" ");
            }
    
            System.out.println();
            String[] s2 = str2.split(" ");
            for (String string : s2) {
                System.out.print(string+" ");
            }
        }
        sc.close();
    }
    控制台:
    1 df 56
    2 45 dfdfd 45
    1 df 56 
    2 45 dfdfd 45 
    0

    代码演示三、:
    包含空格的数据输入

    public static void testBufferedReader()
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            String read = br.readLine();
            System.out.println(read);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    控制台:
    gfds 456465 fdgdgf
    gfds 456465 fdgdgf
        <^_^>
    
    展开全文
  • Java怎么从控制台输入

    2022-06-21 18:24:31
    Java 中,有四种不同的方式可以在命令行环境(控制台)中读取用户的输入

            在 Java 中,有四种不同的方式可以在命令行环境(控制台)中读取用户的输入。

    1.使用缓冲阅读器类

            这是Java经典的取输入方式,在JDK1.0中引入。此方法通过将 System.in(标准输入流)包装在 InputStreamReader 中来使用,InputStreamReader 包装在 BufferedReader 中,我们可以在命令行中读取用户的输入。

            输入被缓冲以实现高效读取。

            包装代码很难记住。

    执行:

    // Java program to demonstrate BufferedReader
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class Test {
    	public static void main(String[] args)
    		throws IOException
    	{
    		// Enter data using BufferReader
    		BufferedReader reader = new BufferedReader(
    			new InputStreamReader(System.in));
    		// Reading data using readLine
    		String name = reader.readLine();
    		// Printing the read line
    		System.out.println(name);
    	}
    }

    输入:

    尚学堂

    输出:

    辅助空间:O(1)

    尚学堂

    2.使用 Scanner 类

            这可能是接受输入的最首选方法。Scanner 类的主要目的是使用正则表达式解析原始类型和字符串,但是,它也可用于在命令行中读取用户的输入。

            从标记化输入中解析基元(nextInt()、nextFloat()、...)的便捷方法。

            正则表达式可用于查找标记。

    阅读方式不同步

    // Java program to demonstrate working of Scanner in Java
    import java.util.Scanner;
    class GetInputFromUser {
    	public static void main(String args[])
    	{
    		// Using Scanner for Getting Input from User
    		Scanner in = new Scanner(System.in);
    		String s = in.nextLine();
    		System.out.println("You entered string " + s);
    		int a = in.nextInt();
    		System.out.println("You entered integer " + a);
    		float b = in.nextFloat();
    		System.out.println("You entered float " + b);
    	}
    }

    输入:

    hello
    12
    3.4

    输出:

    您输入了字符串 hello
    您输入了整数 12
    你输入了 float 3.4

    3.使用控制台类

            它已成为从命令行读取用户输入的首选方式。此外,它可以用于读取类似密码的输入,而不用回显用户输入的字符;也可以使用格式字符串语法(如 System.out.printf())。

    优点:

    • 读取密码而不回显输入的字符。
    • 读取方法是同步的。
    • 可以使用格式字符串语法。
    • 不适用于非交互环境(例如 IDE)。
    // Java program to demonstrate working of System.console()
    // Note that this program does not work on IDEs as
    // System.console() may require console
    public class Sample {
    	public static void main(String[] args)
    	{
    		// Using Console to input data from user
    		String name = System.console().readLine();
    		System.out.println("You entered string " + name);
    	}
    }

    输入:

    hello

    输出:

    您输入了字符串 hello

    4.使用命令行参数

            最常用于竞争性编码的用户输入。命令行参数以字符串格式存储。Integer 类的 parseInt 方法将字符串参数转换为 Integer。同样,对于执行期间的浮动和其他。args[] 的用法出现在这种输入形式中。信息的传递发生在程序运行期间。命令行提供给 args[]。这些程序必须在 cmd 上运行。

    代码:

    // Program to check for command line arguments
    class Hello {
    	public static void main(String[] args)
    	{
    		// check if length of args array is
    		// greater than 0
    		if (args.length > 0) {
    			System.out.println(
    				"The command line arguments are:");
    			// iterating the args array and printing
    			// the command line arguments
    			for (String val : args)
    				System.out.println(val);
    		}
    		else
    			System.out.println("No command line "
    							+ "arguments found.");
    	}
    }

    命令行参数:

    javac GFG1.java
    java Main Hello World

    输出:

    命令行参数是:
    你好
    世界

    Java学习视频

    Java基础:

    Java300集,Java必备优质视频_手把手图解学习Java,让学习成为一种享受

    Java项目:

    【Java游戏项目】1小时教你用Java语言做经典扫雷游戏_手把手教你开发游戏

    【Java毕业设计】OA办公系统项目实战_OA员工管理系统项目_java开发

    展开全文
  • 主要有3种方式从控制台输入字符。 一、System.in 这是一个标准输入流,并且可以通过它来提供输入数据。 System.in.read():返回键盘输入的字节流。 键盘输入的信息是用UTF-8编码的,也就是说假如输入是ASCII中的...

    先总结一下用法,后面是详细介绍:

    • System.in 读取单个byte,可以读取ASCII码中的字符
    • InputStreamReader 读取单个\一串字符,这个字符可以是任意编码(并且可以指定编码方式)
    • BufferedReader 读取一行字符。
    • Scanner :最强最通用的方法,可以读取指定类型的字符。

    一、System.in

    这是一个标准输入流,并且可以通过它从键盘中获取字节流

    官方描述:
    The "standard" input stream. This stream is already open and ready to supply input data. Typically this stream corresponds to keyboard input or another input source specified by the host environment or user.

    System.in.read():返回从键盘输入的字节流。

    键盘输入的信息是用UTF-8编码的,而read()每次返回一个字节。也就是说假如输入是ASCII中的编码,刚好可以返回一个完整字符。

    可以将read()的返回值强制转换为char。
    (注: char类型实际是utf16存储的,但是对于ASCII码,utf-8和utf-16对应的数字都是一样的)

            while(true){
                char c = (char)System.in.read();
                System.out.println(c);
            }
    

    运行效果:(绿字为输入,白字为输出)
    在这里插入图片描述

    但是假如输入的是汉字,就比较麻烦了。汉字的UTF-8是3字节。也就是说会返回3个byte

            while(true){
                System.out.println(System.in.read());
            }
    
    

    在这里插入图片描述
    230 177 137刚好是"汉"的utf-8编码

    总结:System.in.read()是按字节读取,可以用来读取ASCII码中的字符,不适合读取UTF-8中占多位的字符。

    二、使用InputStreamReader将字节流转换为字符流读取

            InputStreamReader ir = new InputStreamReader(System.in);
            while(true){
                char c = (char)ir.read();
                System.out.println(c);
            }
    

    以上代码的效果是: 每次读取一个字符(而不是字节),也就是说,现在可以直接读取汉字了。

    什么是InputStreamReader? 他是一个将字节流转换为字符流的“桥”。默认情况下,它可以将字节按UTF-8解码,并编码成char类型(即utf16),以在java中显示。
    在这里插入图片描述

    源码中的解释如下:

    
    //An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into //characters using a specified charset. 
        /**
         * Creates an InputStreamReader that uses the default charset.
         *
         * @param  in   An InputStream
         */
        public InputStreamReader(InputStream in) {
            super(in);
            sd = StreamDecoder.forInputStreamReader(in, this,
                    Charset.defaultCharset()); // ## check lock object
        }
    

    InputStreamReader还可以选定解码方式。比如:

    InputStreamReader ir = new InputStreamReader(System.in,"UTF-16");
    

    不过这样解析出来是乱码。因为键盘输入是UTF-8编码。

    三、使用BufferedReader,利用缓存实现整行读取

    如何读取一串字符呢?首先想到可以把字符全缓存到一个char[] 数组中
    实际上,InputStreamReader的read方法就能实现这样的效果。

            InputStreamReader ir = new InputStreamReader(System.in);
            char[] buffer = new char[10];
            while(true){
                ir.read(buffer);
                System.out.println(buffer);
            }
    

    在这里插入图片描述

    buffer存储的内容是:
    在这里插入图片描述

    假如我们想仅读取一行数据怎么办?可以遍历查找到’\n’,再用’\n’前面的字符中构造字符串。方法这里就不写了。

    这样,我们通过自定义一个缓存区,实现了一串字符的读取。
    java中提供了BufferedReader类,该类内置了缓存区,我们就可以实现整行读取,不需要自己再设置缓存区。

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            while(true){
                String str = br.readLine();
                System.out.println(str);
            }
    

    在这里插入图片描述

    四、Scanner:格式化读取

    这应该是最常用的读取方式
    首先可以做到前面的读取一行字符的功能:

            Scanner in = new Scanner(System.in);
            while(true){
                if(in.hasNextLine())
                System.out.println(in.nextLine());
            }
    

    效果:
    在这里插入图片描述

    Scanner可以说集成了前面的各种输入方法。

    1、字符串解码:Scanner构造时的参数是字节流,肯定需要解码才能转为字符,默认使用UTF-8解码,但是也可以指定其他解码方式

    Scanner in = new Scanner(inputStream,"UTF-16");
    

    2、缓存输入字符。使用的是一个CharBuffer类作字符缓存,其内部是char[]存储的
    3、将字符解析为基本类型。类似ParseInt等函数的作用。

    nextInt()读取数字

            Scanner in = new Scanner(System.in);
            while(true){
                if(in.hasNextLine())
                System.out.println(in.nextInt()*10);
            }
    

    在这里插入图片描述
    还可以指定进制:这里以20进制为例

            Scanner in = new Scanner(System.in);
            while(true){
                if(in.hasNextLine())
                System.out.println(in.nextInt(20));
            }
    

    在这里插入图片描述
    (20进制中的j相当于10进制中的19)

    另外还有其他的很多方法,不一一列举了,比较简单。

    展开全文
  • 主要介绍了java 使用Scanner类接收从控制台输入数据方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 下面小编就为大家带来一篇Java从控制台读入数据的几种方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 介绍了Java命令控制台输入数据的几种常用方法
  • 一、使用System.in.read()一次获取一个字节输入再多数据,只会获取第一个字节的int形式。获取的是字节,而不是字符,所以如果输入中文字符,强转后会得到乱码1 try{2 int in_num=System.in.read(); //获取的是一个...
  • 原文博客地址:https://www.cnblogs.com/SzBlog/p/5404246.html一、使用标准输入串System.in//System.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字//System.in.read()返回一个整数//必须...
  • 从控制台获取数据,步骤 ...3、获得键盘输入数据 根据输入的数据类型来获取 例如获取int型数据 int age = input.nextInt(); 获取String型数据 String name=input.next(); 获取double型数据 double sco
  • java从控制台输入整形数据方式 主要使用的是 java.util.Scanner 类 输入多个数值时,按空格在输入下一个数字,按回车键结束 Scanner sc = new Scanner(System.in); System.out.println("请输入一个正整数:"); ...
  • java的数据输入:从控制台输入数据定义.pdf
  • 这篇博文是用Windows Live Writer写的,看看效果下面是以前写的程序:java从控制台输入多行数据 按回车键输入空行结束//试过几个插件,发现插入代码后都不能复制,但是插入图片还是很方便的,用wlw写博客好处是...
  • 要求 通过控制台输入一i个人的姓名 性别 年龄 身高 和性格 ,然后让该人自我介绍
  • java从控制台获取输入数据的几种方法下面列举了java从控制台获取输入数据的4种方法,并且说明了适用的jdk版本及其注意事项,希望能够对你有所帮助import java.io.BufferedReader;import java.io.Console;import java....
  • java的数据输入:从控制台输入数据[借鉴].pdf
  • Java获取控制台输入的两种方法

    千次阅读 2021-11-17 16:55:11
    在学习网络编程中,有需要从控制台输入数据,进行两个线程之间的通信,其中,涉及到了读取控制台输入的两种不同的操作,笔者在这里进行记录,以供大家分享。 方法一、InputStreamReader 本身只能单个字符地读取...
  • Java从控制台(如:键盘)获取输入值的3种方法 import java.util.Scanner; // 方法1 需要引入 import java.io.*; //方法2和方法3 需要引入 public class main{ public static void main(String [] args) throws ...
  • java控制台输入

    2021-03-05 19:29:58
    一、java控制台输入java控制台输入有如下几个方法1、JDK 1.4 及以下版本读取的方法JDK 1.4 及以下的版本中要想控制台中输入数据只有一种办法,即使用System.in获得系统的输入流,再桥接至字符流字符流中读入数据...
  • 0 版本开始,能从控制台输入数据的方法每增加一个版本号,就有一种新增的方法,这也增加了选择的种类,可以依据不同的要求来进行选择。下面来看一下,各个版本中如何从控制台中读取数据以及各自的优缺点。 1 JDK...
  • 主要介绍了java从控制台接收一个数字的实例详解的相关资料,这里提供实例代码,注释说明清晰,需要的朋友可以参考下
  • JAVA控制台输入输出

    千次阅读 2021-10-18 22:07:29
    下载完成后找到文件夹并解压,点击exe结尾的文件安装,安装过程中选择自己机器的进程64/32,系统选择Java,如图 再次点击文件运行,直接选择默认设置DO NOT 开头的,信息分享选择don't send(不能分享数据) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 141,035
精华内容 56,414
关键字:

java从控制台输入数据