Java之控制台输入值

常见输入方法

  1. Scanner:
    整型:nextInt();
    浮点:nextFloat(),nextDouble();
    字符串:nextLine();next();
    字符:next.charAt(0);
import java.util.Scanner;

/**
 * 
 * @author Cendeal
 * @since  20170301
 * 
 */
public class OperationChar {

    public static void main(String[] args){
        Scanner cin=new Scanner(System.in);
        System.out.print("请输入整型a=");
        int a=cin.nextInt();
        //输入一个字符
        System.out.print("请输入字符ch=");
        char ch=cin.next().charAt(0);
        System.out.print("请输入浮点型b=");
        int b=cin.nextDouble();
        System.out.println(a);
        System.out.println(ch);
        System.out.println(b);
        cin.close();//防止leak
        }

}

输入:

a=5
c=+
b=6.6

输出:

5
+
6.6

2.System.in.read():
返回的是整型。

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

/**
 * 
 * @author Cendeal
 * @since  20170301
 * 
 */
public class OperationChar {

    public static void main(String[] args) throws IOException {
        Scanner cin=new Scanner(System.in);
        System.out.print("请输入:");

        System.out.println("你输入的是"+System.in.read());

        }

}

输入

abcde f g h

输出

97

技巧:可以将值转换为char:如(char)System.in.read()

3.BufferedReader:
通过缓冲区的方式来获取


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

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
    //jdk1.4之前的方法,从控制台接收一个字符串,然后将其打印出来。我们需要用到BufferedReader类和InputStreamReader类
       try{     
           BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
           String str = null;
        System.out.println("Enter your value:");
        str = bufferedReader.readLine();
        System.out.println("your value is :"+str);
       }
       catch(IOException e){

       }

输入

> 12345678910abc


输出

> 12345678910abc
<think> 我们正在讨论如何在Java中对List<Integer>进行从大到小的排序。根据之前的回答,用户已经得到了三种主要方法:使用Collections.sort()配合逆序比较器、使用List.sort()配合Lambda表达式,以及使用Stream API生成新列表。现在用户提出了一个新问题:如何在Java中进行控制台输入。虽然引用的内容提到了Scanner类,但用户的问题已经明确转向控制台输入方法。 考虑到用户之前的问题是关于集合排序,现在突然转向控制台输入,这可能是用户想在程序中动态输入数据然后进行排序。因此,在回答控制台输入的同时,最好能将两者结合起来,展示一个完整的示例:从控制台读取整数,然后对它们进行降序排序。 回答结构如下: 1. 介绍控制台输入的主要方法(Scanner类) 2. 详细说明Scanner类的常用方法 3. 提供一个完整的示例:从控制台读取多个整数,存储在List中,然后对该List进行降序排序 4. 给出代码示例并解释关键步骤 5. 生成相关问题 注意:引用标记要自然地添加到引用内容的末尾。由于用户提供了两个引用,我们在使用到这些引用内容的地方加上[^1]和[^2]。 </think> 在 Java 中实现控制台输入主要使用 `java.util.Scanner` 类,它提供了多种方法读取不同类型的输入数据。以下是详细实现方法和示例: ### 一、控制台输入基础实现 ```java import java.util.Scanner; public class ConsoleInputExample { public static void main(String[] args) { // 创建 Scanner 对象(关联System.in) Scanner scanner = new Scanner(System.in); System.out.print("请输入整数: "); int intValue = scanner.nextInt(); // 读取整数 System.out.print("请输入浮点数: "); double doubleValue = scanner.nextDouble(); // 读取浮点数 System.out.print("请输入字符串: "); String stringValue = scanner.next(); // 读取单词(空格分隔) scanner.nextLine(); // 清除缓冲区换行符 System.out.print("请输入整行文本: "); String fullLine = scanner.nextLine(); // 读取整行文本 scanner.close(); // 关闭资源 } } ``` ### 二、Scanner 类核心方法 | 方法 | 功能 | 示例 | |------|------|------| | `nextInt()` | 读取整数 | `int num = scanner.nextInt();` | | `nextDouble()` | 读取双精度浮点数 | `double price = scanner.nextDouble();` | | `next()` | 读取单词(空格分隔) | `String word = scanner.next();` | | `nextLine()` | 读取整行文本 | `String line = scanner.nextLine();` | | `nextBoolean()` | 读取布尔 | `boolean flag = scanner.nextBoolean();` [^2] | | `hasNextXxx()` | 检查输入类型 | `if(scanner.hasNextInt()){...}` | ### 三、完整示例:读取多个整数并排序 ```java import java.util.*; public class InputAndSort { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Integer> numbers = new ArrayList<>(); System.out.println("输入整数(输入非数字结束):"); while (scanner.hasNextInt()) { // 循环读取整数 numbers.add(scanner.nextInt()); } // 从大到小排序 numbers.sort(Collections.reverseOrder()); System.out.println("降序结果: " + numbers); scanner.close(); } } ``` **执行流程**: ``` 输入整数(输入非数字结束): 25 43 17 q // 输入非数字结束 降序结果: [43, 25, 17] ``` ### 四、注意事项 1. **缓冲区清理**:混合使用 `nextXxx()` 和 `nextLine()` 时,中间需加 `nextLine()` 清除换行符 ```java int a = scanner.nextInt(); scanner.nextLine(); // 清除缓冲区 String s = scanner.nextLine(); ``` 2. **资源关闭**:使用后调用 `scanner.close()` 释放系统资源 3. **输入验证**:使用 `hasNextInt()` 等避免输入类型错误 ```java if (scanner.hasNextDouble()) { double value = scanner.nextDouble(); } else { System.out.println("输入无效!"); } ``` ### 五、替代方案(Java 6+) ```java // 使用 BufferedReader 读取文本行 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String inputLine = reader.readLine(); int num = Integer.parseInt(inputLine); // 手动转换类型 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cendeal

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值