`
coolfish0906
  • 浏览: 13028 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

jdk System.in.read()方法的说明

JDK 
阅读更多

我们先来看一段程序

package system.in;

import java.io.IOException;

public class SystemIn {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        int a = 0;
        a = System.in.read();
        System.in.getClass();

        System.out.println("a=" + a);
        int sum = 0;
        for (int i = 0; i <= a; i++)
            sum += i;
        System.out.println(sum);

    }

}

当我们输入为

5

发现输出

a=53
1431

会觉得很奇怪,为什么我输入的是5,结果输出a却为53,其实如果你了解read()这个函数,就很容易明白,System.in.read()返回的是输入数值的 ASKII 码(一个 int 整数)。

那么怎么来解决这种问题呢,有两种方式可以解决

1.采用System.out.write();注意使用这种方法,只能将值输出的时候再转换回来,但是里面的运算逻辑值还是错误的,就是sum的值还是错误的。

2.采用BufferedReader,但是要注意的是BufferReader读入的是一个字符串,所以我们在程序里面还要将其转换为Integer,我们就会发现代码如下

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(reader.readLine());
        System.out.println("a=" + a);
        int sum = 0;
        for (int i = 0; i <= a; i++)
            sum += i;
        System.out.println(sum);

使用这种方法需要注意你输入的值,必须是数字,不能是字符串

 

所以个人感觉,如果你之需要对自己输入的数字做处理,比如进行相加,相减等操作,还是使用第二种方法比较好。

 

分享到:
评论

相关推荐

    jdk 10.0.zip

    Java Development Kit(JDK)是Java编程语言的核心组件,它为开发者提供了编译、调试和运行Java应用程序所需的所有工具。 JDK 10.0是Oracle公司发布的一个重要版本,标志着Java平台的持续发展和进步。这个压缩包"jdk...

    jdk1.8.docx

    Lambda expressions allow you to define functions as objects, making code more concise and easier to read. They are particularly useful when dealing with collections and event-driven programming. 2. ...

    win x64 JDK11.rar

    1. **模块系统(Module System)**:JDK11引入了Java Platform Standard Edition (Java SE) 9中的模块化系统,通过`module-info.java`文件来定义和管理模块间的依赖关系,有助于提升程序的可维护性和安全性。...

    jdk-11.0.9_windows-x64_bin.zip

    1. **模块化系统(Jigsaw Project)**:JDK11引入了Java Platform Module System (JPMS),这是Java 9的主要特性,但对JDK11也有影响。JPMS将JDK划分为多个模块,提高了代码的可维护性和安全性。 2. **HTTP客户端**...

    jdk-9.0.1_doc-all 最新版

    The Java Development Kit (JDK) APIs are specific to the JDK and will not necessarily be available in all implementations of the Java SE Platform. These APIs are in modules whose names start with jdk....

    jdk-11.0.11_osx-x64_bin.dmg

    标题中的"jdk-11.0.11_osx-x64_bin.dmg"是一个针对Mac OS X操作系统的Java Development Kit (JDK)版本11.0.11的二进制安装包,以.dmg格式提供。这个.dmg文件是苹果操作系统特有的磁盘映像格式,通常用于软件分发和...

    Java文件io-stream-file教程

    为了获得一个绑定到控制台的字符流,可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。BufferedReader 对象创建后,可以使用 read() 方法从控制台读取一个字符,或者用 readLine() 方法读取一个...

    在java中_如何使用输入

    字节输入流 `System.in` 是 `InputStream` 的常量对象,可以使用 `read()` 方法从键盘接收数据。实现步骤是:先把数据读入字节数组中,然后利用字节数组定义字符串,最后把字符串转化为需要的数据类型。例如: ```...

    JDK Development Kit 17.0.7 downloads - Linux - x64 ROM Package

    6. **模块系统**:JDK 17遵循Java Platform Module System (JPMS),进一步模块化JDK,帮助开发者构建更清晰、更易于管理的项目结构。 **安装JDK 17.0.7 on Linux x64** 1. **下载**:首先,你需要从Oracle官方网站...

    java的任务作业

    System.out.println("length:" + (len = System.in.read(cb))); System.out.println(new String(cb)); } } ``` #### 四、总结 通过以上内容的学习,我们了解到Java环境的基本配置、程序的编译运行流程以及...

    JDK_API_1.9(中文版)JDK_API_1_9_zh_CN.zip

    JDK API 文档是开发者的重要参考资料,提供了 Java 类库的详细说明,帮助开发者理解和使用各种类、接口、方法等。本文将深入探讨 JDK API 1.9 的中文版,以帮助中国开发者更好地理解和应用这个版本的 Java 平台。 #...

    java实验报告完整版.docx

    char grade = (char) System.in.read(); switch (grade) { case 'A': System.out.println("范围在85~100"); break; case 'B': System.out.println("范围在70~85"); ... // 其他等级判断 default: System....

    jdk9 Api 中文文档 .rar

    Java 9 API中文文档是Java开发者的重要参考资料,它包含了Java平台标准版(Java SE)9的所有公共类、接口、枚举、注解等编程元素的详细说明。这份文档由谷歌翻译,虽然可能存在少许误差,但总体上仍能提供准确的信息...

    jdk-11.0.4_windows-x64_bin.zip

    1. **模块化系统(Project Jigsaw)**:JDK 11引入了Java Platform, Standard Edition Module System(JPMS),通过模块化来提高可维护性、可升级性和安全性。这使得大型项目可以更有效地管理依赖关系,并减少运行时...

    java中键盘输入 的各种实现方式

    Java提供了标准的字节输入流`System.in`,可以通过`read()`方法读取键盘输入。 **示例代码**: ```java public class DataKeyboardInput2 { public static void main(String[] args) { byte[] buf = new byte[10];...

    jdk9API中文文档,英文文档

    JShell是JDK9中引入的一个命令行工具,它提供了一个交互式的Read-Eval-Print Loop(REPL)环境,允许开发者快速测试和验证Java代码片段,无需编写完整的程序或启动IDE。这对于学习和调试Java代码非常方便。 ### 3. ...

    jdk_1.9_中,英文api

    JShell是JDK 1.9引入的一个新的交互式命令行工具,也称为Java REPL(Read-Eval-Print Loop)。它允许开发者即时测试代码片段,无需创建完整的Java项目,极大地提高了开发效率和学习过程。 **改进的Stream API** 在...

    jdk-10.0.2-win10.zip 下载

    2. **模块系统(Module System, JEP 261)**:Java 9引入了模块系统,JDK 10在此基础上继续优化。模块化有助于提升应用的可维护性、安全性和性能,通过明确的依赖关系管理,可以更轻松地构建大型复杂项目。 3. **...

    jdk1.9API-cn.chm.zip

    **Java Development Kit (JDK) 1.9 API 中文版** JDK 1.9,也称为 Java SE 9,是Java平台标准版的一个重要版本,由Oracle公司发布。这个版本引入了许多新特性和改进,旨在提升开发者的效率、性能和可维护性。这个...

    jdk-9.0.4_windows-x64_bin.zip

    1. 模块系统(Module System):JDK 9引入了Jigsaw项目,它引入了模块化概念,以提高Java应用程序的可维护性和安全性。通过模块,开发者可以更好地控制代码的依赖关系,减少运行时的内存占用,并且有助于避免类路径...

Global site tag (gtag.js) - Google Analytics