【java】简单的Java语言控制台程序

一、用于文本文件处理的Java语言控制台程序示例

以下是一份简单的Java语言控制台程序示例,用于文本文件的处理。本例中我们将会创建一个程序,它会读取一个文本文件,显示其内容,并且对内容进行计数,然后将结果输出到控制台。

首先,需要在Java开发环境中创建一个新的Java类。下面是一个基本示例代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;public class TextFileProcessor {public static void main(String[] args) {String filePath = "TextFileProcessor.java"; // 将此处替换为你的文本文件路径try {// 创建FileReader和BufferedReader来读取文件FileReader fileReader = new FileReader(filePath);BufferedReader bufferedReader = new BufferedReader(fileReader);String line;int lineCount = 0;int wordCount = 0;int charCount = 0;// 逐行读取文件内容,直到读取完毕while ((line = bufferedReader.readLine()) != null) {// 显示文件内容System.out.println(line);// 计数lineCount++;String[] words = line.split(" ");wordCount += words.length;charCount += line.length();}// 关闭bufferedReaderbufferedReader.close();// 输出计数结果System.out.println("\n文件总计有 " + lineCount + " 行。");System.out.println("文件总计有 " + wordCount + " 个单词。");System.out.println("文件总计有 " + charCount + " 个字符。");} catch (IOException e) {System.out.println("发生错误读取文件: " + e.getMessage());}}
}

如何工作:

1. FileReader用于打开文件以进行读取。
2. BufferedReader则用于提高读取效率,它包裹着`FileReader`。
3. 在一个循环中,可以调用`readLine`方法逐行读取文件。
4. 对于读取到的每一行,我们打印它,并对行数、单词数和字符数进行计数。
5. 读取完成后关闭`BufferedReader`。
6. 打印出行数、单词数和字符数的统计结果。
注意,上面的程序需要进行错误处理。这里我们使用了一个简单的try-catch块来捕获和处理`IOException`。
这个例子可以作为处理文本文件的起点,可以根据需要扩展这个程序来进行更复杂的文件处理,比如统计特定单词的频率、替换特定文本或者实现文件的写入功能。

二、运行示例

要运行上面给出的Java程序,需要执行以下步骤:

1. 编写代码

   首先,将上面的代码复制粘贴到文本编辑器中,并保存为一个以`.java`扩展名结尾的文件。假设我们将其保存为`TextFileProcessor.java`。

2. 确保Java环境已安装

   需要在计算机上安装Java开发工具包(JDK),才能编译和运行Java程序。Documentation

3. 编译Java程序

   打开命令行工具(在Windows中是`cmd`,在macOS和Linux中是`Terminal`),然后切换到包含`TextFileProcessor.java`文件的目录。例如,如果该文件在`D:\JavaProjects\`目录中,需要键入:

cd D:\JavaProjects\

   然后,编译Java程序,使用以下命令:

javac TextFileProcessor.java

   如果代码没有错误,这个命令将会生成一个名为`TextFileProcessor.class`的字节码文件,这是Java虚拟机(JVM)可以执行的文件格式。

4. 运行Java程序

   在同一个命令行窗口中,现在可以运行编译过的程序了:

java TextFileProcessor

程序将会读取文件内容并显示在控制台上。
如果编译或运行时遇到任何问题,请检查以下几点:
- 是否已将Java添加到了系统环境变量中。
- 是否在正确的路径下执行命令。
- Java源文件名是否与public class的名称一致。
- 文件路径是否准确无误(不存在路径错误,权限问题等)。
遵循这些步骤,应该能够顺利编译和运行Java程序。   

三、java和javac

java 和 javac 是两个不同的命令,它们各自在 Java 开发中扮演着不同的角色。

java 命令

  • java 命令用于运行已经编译好的 Java 程序,也就是运行 .class 文件。
  • 当使用 java 命令来运行一个程序时,实际上是在告诉 Java 虚拟机 (JVM) 去加载和运行指定的类。
  • 例如,如果有一个名为 HelloWorld 的类,并且该类有一个 main 方法,可以使用 java HelloWorld 命令来运行它。

javac 命令

  • javac 命令用于编译 Java 源代码文件,也就是 .java 文件,生成对应的 .class 文件。
  • 编译是将人类可读的源代码转换为机器可执行的字节码的过程。
  • 例如,如果有一个名为 HelloWorld.java 的源代码文件,可以使用 javac HelloWorld.java 命令来编译它,生成 HelloWorld.class 文件。

java 命令是用来执行已经编译好的 Java 程序,而 javac 命令是用来将 Java 源代码编译成可执行的字节码。因此,在 Java 开发过程中,通常会先使用 javac 命令来编译你的源代码,然后再使用 java 命令来运行编译后的程序。

值得注意的是,javac 命令实际上是 Java 开发工具包 (JDK) 的一部分,而 java 命令则是 Java 运行时环境 (JRE) 的一部分。JDK 包含了用于开发和编译 Java 程序的工具,而 JRE 则只包含了运行 Java 程序所需的最小环境。因此,如果只安装了 JRE 而没有安装 JDK,那么将无法使用 javac 命令来编译 Java 程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/255162.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven进阶

一、分模块开发与设计 1. 分模块开发的意义 问题导入 分模块开发对工程有什么好处? 模块拆分原则 目的:项目的扩展性变强了,方便其他项目引用相同的功能。 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用&#…

知识图谱与图神经网络融合:构建智能应用的新前沿

目录 前言1 知识图谱表示学习1.1 典型模型1.2 下游任务 2 图神经网络与知识图谱表示学习2.1 Compgcn:合成图卷积模型2.2 知识图谱嵌入在归纳设置下的推进 3 图神经网络与知识图谱构建3.1 关系抽取的进阶应用3.2 结构信息补全与知识图谱的完整性 4 图神经网络与知识图…

Vue事件中如何使用 event 对象

在Vue中,事件处理函数常常需要获取事件触发时的相关信息,比如鼠标位置、按键信息等。而要获取这些信息,就需要使用event对象。那么在Vue的事件中如何正确使用event对象呢?接下来就来详细介绍一下。 首先,在Vue的事件中…

算法练习-二叉搜索树中的搜索(思路+流程图+代码)

难度参考 难度:中等 分类:二叉树 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨…

C语言:操作符详解

创作不易,给个三连吧!! 一、算术操作符 C语言中为了方便计算,提供了算数操作符,分别是:,-,*,/,% 由于这些操作符都是有两个操作数(位于操作符两边),所以这种操作符也叫做双目操作…

通过 docker-compose 部署 Flink

概要 通过 docker-compose 以 Session Mode 部署 flink 前置依赖 Docker、docker-composeflink 客户端docker-compose.yml version: "2.2" services:jobmanager:image: flink:1.17.2ports:- "8081:8081"command: jobmanagervolumes:- ${PWD}/checkpoin…

使用clearml监控模型训练过程

安装依赖 pip install clearml依赖安装好后登陆clearml官网 创建一个工作空间 点击Create new credentials 点击后将api整块复制出来,随后需要在当前终端环境中初始化这个clearml的账户信息 终端输入: clearml-init 在出现的Paste copied configurat…

10个常考的前端手写题,你全都会吗?(上)

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (下篇)

在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (下篇) 项目介绍 YOLOv5 是革命性的 "单阶段"对象检测模型的第五次迭代,旨在实时提供高速、高精度的结果,是世界上最受欢迎的视觉人工智能模型,代表了Ult…

医院挂号预约|医院挂号预约小程序|基于微信小程序的医院挂号预约系统设计与实现(源码+数据库+文档)

医院挂号预约小程序目录 目录 基于微信小程序的医院挂号预约系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序用户端 2、系统服务端 (1) 用户管理 (2)医院管理 (3)医生管理 &…

学习笔记——ENM模拟

学习笔记——ENM模拟 文章目录 前言一、文献一1. 材料与方法1.1. 大致概念1.2. 生态模型的构建1.2.1. 数据来源:1.2.2. 数据处理:1.2.3. 模型参数优化: 1.3. 适生情况预测1.3.1. 预测模型构建1.3.2. 适生区划分 1.4. 模型的评估与验证 2. 结果…

Backtrader 文档学习- Plotting -Plotting on the same axis

Backtrader 文档学习- Plotting -Plotting on the same axis 1.概述 在同一轴上绘图,绘图是在同一空间上绘制原始数据和稍微(随机)修改的数据,但不是在同一轴上。 核心代码,data数据正负50点。 # The filter which changes the close pri…

C++ dfs 的状态表示(五十一)【第十一篇】

今天我们接着学习dfs(状态表示)。 1.抽象形式的dfs 前面用到的 DFS 算法都是比较容易想象出搜索过程的,接下来我们看一些不那么容易想象搜索过程的 DFS 过程,这些问题我们称为抽象形式的 DFS。 来回顾一下上节课遇到的一个问题&a…

【蓝桥杯冲冲冲】k 短路 / [SDOI2010] 魔法猪学院

蓝桥杯备赛 | 洛谷做题打卡day33 文章目录 蓝桥杯备赛 | 洛谷做题打卡day33题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示数据规模数据更新日志 题解代码我的一些话 【模板】k 短路 / [SDOI2010] 魔法猪学院 题目背景 注:对于 k k k 短路问…

机器学习11-前馈神经网络识别手写数字1.0

在这个示例中,使用的神经网络是一个简单的全连接前馈神经网络,也称为多层感知器(Multilayer Perceptron,MLP)。这个神经网络由几个关键组件构成: 1. 输入层 输入层接收输入数据,这里是一个 28x…

93 log4j-slf4j-impl 搭配上 log4j-to-slf4j 导致的 StackOverflow

前言 呵呵 最近想要 做一个 mongo 低版本的客户端读取高版本的服务端传递过来的数据造成的一个错误的时候, 出现了这样的问题 引入了 mongo-java-driver 之后, 使用相关 api 的时候会触发 com.mongo.internal.connection.BaseCluser 的初始化, 其依赖的 Loggers 间接的依赖…

SQLite database实现加密

注意:以下操作以VS2022为开发工具,以C#为开发语言。 数据加密原因 软件在使用的各个场景,很多都需要数据具有保密性,于是对于数据库就需要加密。特别是在某些特定领域或存储敏感数据尤其如此。 SQLite加密实现 SQLite加密有两种…

问题:2、计算机网络的目标是实现________。 #媒体#知识分享

问题:2、计算机网络的目标是实现________。 A.数据处理 B.信息传输与数据处理 C.资源共享与信息传输 D.文献查询 参考答案如图所示

c++之说_11|自定义类型 enum(枚举)与enumclass (c11新枚举)

至于枚举 会用就行 至少目前我感觉没什么太多问题 enum 被称为无作用域枚举 , enumclass / enumstruct 被称为有作用域枚举 看到了吧 语法规则 和 struct 差不多 只不过枚举成员 只是一个标志 它本质是数值 从上到下 下面的数根据上面的数 加 1 也可以直接…

表单标记(html)

前言 发现input的type属性还是有挺多的,这里把一些常用的总结一下。 HTML 输入类型 (w3school.com.cn)https://www.w3school.com.cn/html/html_form_input_types.asp text-文本 文本输入,如果文字太长,超出的部分就不会显示。 定义供文本输入的单行…