java中从键盘输入的三种方法以及Console输入

java中从键盘输入的三种方法:

import java.io.BufferedReader;    
import java.io.IOException;    
import java.io.InputStreamReader;    
import java.util.Scanner;    

public class Inout {   
      
  public static void main(String[] args) {
    charTest();  //调用System.in方法   
    readTest();  //调用ReadTest方法   
    scannerTest();//调用ScannerTest方法   
  }   
  /**  
   * System.in和System.out方法  
   * 缺点一: 该方法能获取从键盘输入的字符,但只能针对一个字符的获取  
   * 缺点二: 获取的只是char类型的。如果想获得int,float等类型的输入,比较麻烦。  
   */  
  public static void charTest(){    
    try{   
      System.out.print("Enter a Char:");   
      char i = (char)System.in.read();   
      System.out.println("Yout Enter Char is:" + i);   
    }   
    catch(IOException e){   
      e.printStackTrace();   
    }   
        
  }   
  /**  
   * InputStreamReader和BufferedReader方法  
   * 优点: 可以获取键盘输入的字符串  
   * 缺点: 如何要获取的是int,float等类型的仍然需要转换  
   */  
  public static void readTest(){   
    System.out.println("ReadTest, Please Enter Data:");   
    InputStreamReader is = new InputStreamReader(System.in);  //new构造InputStreamReader对象   
    BufferedReader br = new BufferedReader(is);  //拿构造的方法传到BufferedReader中   
    try{  //该方法中有个IOExcepiton需要捕获   
      String name = br.readLine();   
      System.out.println("ReadTest Output:" + name);   
    }   
    catch(IOException e){   
      e.printStackTrace();   
    }   
        
  }   
  /**  
   * Scanner类中的方法  
   * 优点一: 可以获取键盘输入的字符串  
   * 优点二: 有现成的获取int,float等类型数据,非常强大,也非常方便;  
   */  
  public static void scannerTest(){   
    Scanner sc = new Scanner(System.in);   
    System.out.println("ScannerTest, Please Enter Name:");   
    String name = sc.nextLine();  //读取字符串型输入   
    System.out.println("ScannerTest, Please Enter Age:");   
    int age = sc.nextInt();  //读取整型输入   
    System.out.println("ScannerTest, Please Enter Salary:");   
    float salary = sc.nextFloat();  //读取float型输入   
    System.out.println("Your Information is as below:");   
    System.out.println("Name:" + name +"\n" + "Age:" + age + "\n"+"Salary:" + salary);
  }   
} 

Console输入: (注:该种方法不能在eclipse中使用)

import java.io.Console;
import java.io.PrintWriter;

public class TestConsole {
    public static void main(String[] args) {
        
        Console cons = System.console();
        if (cons != null) {
            
            PrintWriter printWriter = cons.writer();
            printWriter.write("input:");
            cons.flush();
            String str1 = cons.readLine();
            cons.format("%s", str1);
        }
    }
}

 

转载自:http://blog.youkuaiyun.com/u012249177/article/details/49586383

转载于:https://www.cnblogs.com/lbd_smile/p/8477406.html

<think>好的,用户的问题是关于如何在Java中按顺序从键盘输入数组。不过用户特别指出,提供的代码只能是JavaScript代码,所以这里可能存在误解。我需要先澄清用户的需求,但根据指示,我必须用JavaScript来回答。 首先,用户可能想用JavaScript实现类似Java从键盘读取输入数组的功能。在JavaScript中,通常没有直接的标准输入方法,尤其是在浏览器环境中,但Node.js环境下可以使用process.stdin来处理。 接下来,我需要解释如何在Node.js中按序读取输入数组。步骤可能包括使用readline模块创建接口,监听line事件来收集输入,并在输入完成后处理数组。例如,用户可能先输入数组长度,然后输入每个元素。 然后,我需要提供示例代码,展示如何异步读取输入,并确保顺序正确。可能使用async/await结合readline的question方法,或者使用事件驱动的方式。需要注意的是处理不同数据类型的输入,比如数字可能需要转换。 最后,相关问题需要围绕JavaScript的输入处理、事件循环、数据类型转换等,确保问题与主题相关,并帮助用户深入理解。</think>在JavaScript中(浏览器环境或Node.js),没有直接的"键盘输入"概念,但可以通过不同方式实现类似功能。以下是两种常见场景的实现方法: 1. 浏览器环境实现方案: ```javascript // 通过prompt()获取输入(会阻塞浏览器线程) const size = parseInt(prompt('请输入数组长度:')); const arr = []; for(let i = 0; i < size; i++) { arr.push(prompt(`请输入第${i+1}个元素:`)); } console.log('结果数组:', arr); ``` 2. Node.js环境实现方案: ```javascript const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }); async function getInput() { const size = await new Promise(res => readline.question('数组长度:', res)); const arr = []; for(let i = 0; i < size; i++) { const value = await new Promise(res => readline.question(`元素 ${i+1}/${size}: `, res)); arr.push(Number(value)); } readline.close(); return arr; } getInput().then(arr => { console.log('最终数组:', arr); process.exit(); }); ``` 解释说明: 1. 浏览器方案使用`prompt()`方法,但会阻塞主线程且样式不可控 2. Node.js方案使用readline模块实现异步输入流处理 3. 输入值需要手动转换为数字(使用Number()) 4. 异步方案使用Promise和async/await处理顺序输入 5. 需要处理输入验证(示例未包含,实际需要添加数字校验)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值