Java习题

1.题目

使用Java的输入、输出流将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并写入到另一个文件中。

代码及详细注释

import java.io.*; // 导入Java I/O库中的所有类public class E { // 定义一个公共类Epublic static void main(String args[]) { // 主方法,程序的入口File file = new File("E.java"); // 创建一个File对象,表示要读取的文件"E.java"File tempFile = new File("temp.txt"); // 创建一个File对象,表示要写入的文件"temp.txt"try { // 开始一个try块,用于捕获和处理可能的IO异常FileReader inOne = new FileReader(file); // 创建FileReader对象,读取"E.java"文件内容BufferedReader inTwo = new BufferedReader(inOne); // 用BufferedReader包装FileReader,提供缓冲功能,提高读取效率FileWriter tofile = new FileWriter(tempFile); // 创建FileWriter对象,用于将内容写入"temp.txt"文件BufferedWriter out = new BufferedWriter(tofile); // 用BufferedWriter包装FileWriter,提供缓冲功能,提高写入效率String s = null; // 定义一个字符串变量s,初始化为null,用于存储每行读取的数据int i = 0; // 定义一个整数变量i,初始化为0,用于记录行号s = inTwo.readLine(); // 读取文件的第一行,并将其存储到字符串变量s中while (s != null) { // 当读取的行不为null时,进入循环i++; // 增加行号计数器out.write(i + " " + s); // 将当前行号和读取的内容写入到"temp.txt"文件中out.newLine(); // 写入一个新行符s = inTwo.readLine(); // 读取文件的下一行}// 关闭所有流,释放资源inOne.close(); // 关闭FileReader流inTwo.close(); // 关闭BufferedReader流out.flush(); // 刷新BufferedWriter流,确保所有缓冲数据都被写入out.close(); // 关闭BufferedWriter流tofile.close(); // 关闭FileWriter流} catch (IOException e) { // 捕获和处理IO异常e.printStackTrace(); // 打印异常信息到标准错误输出}}
}

代码执行过程

  1. 文件对象创建

    • File file = new File("E.java");:表示要读取的原始文件。
    • File tempFile = new File("temp.txt");:表示要写入的新文件。
  2. 文件流初始化

    • FileReaderBufferedReader 用于从 E.java 文件中按行读取文本。
    • FileWriterBufferedWriter 用于将文本写入 temp.txt 文件,并为每一行添加行号。
  3. 读取与写入

    • 循环读取 E.java 文件的每一行,将行号与文本内容拼接后写入 temp.txt
  4. 流的关闭

    • 在操作完成后,关闭所有打开的流以释放资源,并刷新 BufferedWriter 确保所有数据写入文件。
  5. 异常处理

    • 使用 try-catch 捕获 IOException 并打印异常堆栈跟踪。
      以下是图片中的Java代码题目及详细注释:

2.题目

计算8 + 88 + 888 + …前10项之和

编写应用程序,使用 for 循环语句计算 8 + 88 + 888 + ... 前10项之和。

代码及详细注释

public class Main { // 定义公共类 Mainpublic static void main(String args[]) { // 主方法,程序的入口int m = 8, i = 1; // 定义整数变量m为8,i为1long item = 8; // 定义长整型变量item为8,用于表示每项的值long sum = 0; // 定义长整型变量sum为0,用于累加前10项的和// for循环,i从1循环到10,每次循环执行一次for (i = 1, sum = 0, item = m; i <= 10; i++) {sum = sum + item; // 将当前项的值加到sum中item = item * 10 + m; // 计算下一项的值,每次循环item变成之前的值乘以10再加上m}System.out.println(sum); // 输出前10项的总和}
}

代码执行过程

  1. 变量初始化

    • m = 8:每一项的基数。
    • i = 1:循环控制变量。
    • item = 8:每一项的初始值为8。
    • sum = 0:用于累加前10项的和。
  2. 循环计算

    • for (i = 1, sum = 0, item = m; i <= 10; i++):循环从1开始到10结束,每次循环:
      • sum = sum + item;:将当前项的值累加到 sum 中。
      • item = item * 10 + m;:计算下一项的值(例如:8、88、888…)。
  3. 输出结果

    • System.out.println(sum);:输出前10项的总和。

这段代码利用了 for 循环来依次生成每一项的值,并将其累加到 sum 中,最终输出前10项的总和。
以下是图片中的Java代码题目及详细注释:

3.题目

计算数的和以及平均值

第3章中例子9的程序允许用户在键盘依次输入若干个数字(每输入一个数字都需要按回车键确认),程序将计算出这些数的和以及平均值。请在第3章的例子9中增加断言语句,当用户输入的数字大于100或小于0时,程序立刻终止执行,并提示这是一个非法的成绩数据。

输出样例:

3个数的和为21.000000
3个数的平均值是7.000000

代码及详细注释

import java.util.*; // 导入Java实用工具包中的所有类public class Main { // 定义公共类Mainpublic static void main(String args[]) { // 主方法,程序的入口Scanner reader = new Scanner(System.in); // 创建Scanner对象,从标准输入流读取用户输入double sum = 0; // 定义双精度变量sum,初始化为0,用于存储输入数字的累加和int m = 0; // 定义整数变量m,初始化为0,用于记录输入数字的个数// 使用while循环读取用户输入的双精度数字,直到输入流中没有更多的数字while (reader.hasNextDouble()) {double x = reader.nextDouble(); // 读取用户输入的下一个双精度数字assert x <= 100 && x >= 0 : "数据不合理"; // 断言输入的数字在0到100之间,若不满足则抛出异常并终止程序m = m + 1; // 数字个数计数器增加1sum = sum + x; // 将输入的数字累加到sum中}// 使用printf方法格式化输出结果System.out.printf("%d个数的和为%f\n", m, sum); // 输出输入数字的总和System.out.printf("%d个数的平均值是%f\n", m, sum / m); // 输出输入数字的平均值}
}

代码执行过程

  1. 初始化变量

    • Scanner reader = new Scanner(System.in);:创建 Scanner 对象,用于从标准输入读取用户输入。
    • double sum = 0;:初始化 sum 变量,用于累加用户输入的数字之和。
    • int m = 0;:初始化 m 变量,用于记录输入数字的个数。
  2. 输入处理和断言

    • while (reader.hasNextDouble()):循环读取用户输入的数字,直到输入流中没有更多数字。
    • double x = reader.nextDouble();:读取下一个双精度数字。
    • assert x <= 100 && x >= 0 : "数据不合理";:断言输入数字在 0100 之间,若不满足则输出 数据不合理 并终止程序。
  3. 累加和计算

    • m = m + 1;:增加计数器 m,表示输入的数字个数。
    • sum = sum + x;:累加输入的数字到 sum 中。
  4. 输出结果

    • System.out.printf("%d个数的和为%f\n", m, sum);:输出输入数字的总和。
    • System.out.printf("%d个数的平均值是%f\n", m, sum / m);:输出输入数字的平均值。

这段代码通过 while 循环从标准输入读取双精度数字,使用断言检查输入数字的范围,并计算总和和平均值。在完成所有输入后,使用 printf 格式化输出总和和平均值。
以下是图片中的Java代码题目及详细注释:

4.题目

public char charAt(int index)方法

String类的 public char charAt(int index) 方法可以得到当前字符串 index 位置上的一个字符。编写程序使用该方法得到一个字符串中的第一个和最后一个字符。

例如测试的字符串为:ABCDabcd

代码及详细注释

public class Main { // 定义公共类 Mainpublic static void main(String args[]) { // 主方法,程序的入口String s = "ABCDabcd"; // 定义字符串变量s并初始化为"ABCDabcd"// 使用charAt方法获取字符串s的第一个字符char cStart = s.charAt(0); // 通过索引0获取字符串的第一个字符,并存储到字符变量cStart中// 使用charAt方法获取字符串s的最后一个字符char cEnd = s.charAt(s.length() - 1); // 通过索引s.length() - 1获取字符串的最后一个字符,并存储到字符变量cEnd中// 输出第一个字符和最后一个字符System.out.println(cStart); // 打印第一个字符cStartSystem.out.println(cEnd); // 打印最后一个字符cEnd}
}

代码执行过程

  1. 字符串初始化

    • String s = "ABCDabcd";:定义并初始化字符串 s
  2. 获取字符

    • char cStart = s.charAt(0);:使用 charAt 方法获取字符串 s 的第一个字符,即索引位置为 0 的字符 'A',并将其存储在 cStart 中。
    • char cEnd = s.charAt(s.length() - 1);:使用 charAt 方法获取字符串 s 的最后一个字符,即索引位置为 s.length() - 1 的字符 'd',并将其存储在 cEnd 中。
  3. 输出结果

    • System.out.println(cStart);:打印 cStart 的值,即字符串的第一个字符 'A'
    • System.out.println(cEnd);:打印 cEnd 的值,即字符串的最后一个字符 'd'

这段代码通过 charAt 方法获取字符串中指定索引位置的字符,并分别获取字符串的第一个和最后一个字符进行输出。

以下是图片中的Java代码题目及详细注释:

5.题目

public String toUpperCase()方法

字符串调用 public String toUpperCase() 方法返回一个字符串,该字符串把当前字符串中的小写字母变成大写字母;
字符串调用 public String toLowerCase() 方法返回一个字符串,该字符串把当前字符串中的大写字母变成小写字母。
String 类的 public String concat(String str) 方法返回一个字符串,该字符串是把调用该方法的字符串与参数指定的字符串连接。编写一个程序,练习使用这3个方法。

测试字符串为:“ABCDabcd”

代码及详细注释

public class Main { // 定义公共类 Mainpublic static void main(String args[]) { // 主方法,程序的入口String s1, s2, t1 = "ABCDabcd"; // 定义字符串s1, s2,初始化t1为"ABCDabcd"// 使用toUpperCase方法将t1转换为大写,并赋值给s1s1 = t1.toUpperCase(); // 调用toUpperCase方法,将字符串t1转换为大写并赋值给s1// 使用toLowerCase方法将t1转换为小写,并赋值给s2s2 = t1.toLowerCase(); // 调用toLowerCase方法,将字符串t1转换为小写并赋值给s2// 输出转换后的大写字符串s1System.out.println(s1); // 打印大写的字符串s1,即"ABCDABCD"// 输出转换后的小写字符串s2System.out.println(s2); // 打印小写的字符串s2,即"abcdabcd"// 使用concat方法将s1和s2连接,并赋值给s3String s3 = s1.concat(s2); // 调用concat方法,将字符串s1与s2连接,结果赋值给s3// 输出连接后的字符串s3System.out.println(s3); // 打印连接后的字符串s3,即"ABCDABCDabcdabcd"}
}

代码执行过程

  1. 字符串初始化

    • String s1, s2, t1 = "ABCDabcd";:定义字符串 s1s2,并初始化字符串 t1"ABCDabcd"
  2. 字符串转换

    • s1 = t1.toUpperCase();:将字符串 t1 中的所有小写字母转换为大写,结果为 "ABCDABCD",并将其赋值给 s1
    • s2 = t1.toLowerCase();:将字符串 t1 中的所有大写字母转换为小写,结果为 "abcdabcd",并将其赋值给 s2
  3. 输出转换结果

    • System.out.println(s1);:打印大写转换后的字符串 s1,即 "ABCDABCD"
    • System.out.println(s2);:打印小写转换后的字符串 s2,即 "abcdabcd"
  4. 字符串连接

    • String s3 = s1.concat(s2);:将字符串 s1s2 连接,结果为 "ABCDABCDabcdabcd",并将其赋值给 s3
  5. 输出连接结果

    • System.out.println(s3);:打印连接后的字符串 s3,即 "ABCDABCDabcdabcd"

通过使用 toUpperCasetoLowerCaseconcat 方法,这段代码展示了如何转换字符串的大小写以及如何连接两个字符串。
以下是图片中的Java代码题目及详细注释:

6.题目

计算数的和以及平均值

第3章中例子9的程序允许用户在键盘依次输入若干个数字(每输入一个数字都需要按回车键确认),程序将计算出这些数的和以及平均值。请在第3章的例子9中增加断言语句,当用户输入的数字大于100或小于0时,程序立刻终止执行,并提示这是一个非法的成绩数据。

输出样例:

3个数的和为21.000000
3个数的平均值是7.000000

代码及详细注释

import java.util.*; // 导入Java实用工具包中的所有类public class Main { // 定义公共类Mainpublic static void main(String args[]) { // 主方法,程序的入口Scanner reader = new Scanner(System.in); // 创建Scanner对象,从标准输入流读取用户输入double sum = 0; // 定义双精度变量sum,初始化为0,用于存储输入数字的累加和int m = 0; // 定义整数变量m,初始化为0,用于记录输入数字的个数// 使用while循环读取用户输入的双精度数字,直到输入流中没有更多的数字while (reader.hasNextDouble()) {double x = reader.nextDouble(); // 读取用户输入的下一个双精度数字assert x <= 100 && x >= 0 : "数据不合理"; // 断言输入的数字在0到100之间,若不满足则抛出异常并终止程序m = m + 1; // 数字个数计数器增加1sum = sum + x; // 将输入的数字累加到sum中}// 使用printf方法格式化输出结果System.out.printf("%d个数的和为%f\n", m, sum); // 输出输入数字的总和System.out.printf("%d个数的平均值是%f\n", m, sum / m); // 输出输入数字的平均值}
}

代码执行过程

  1. 导入包

    • import java.util.*;:导入 java.util 包中的所有类,用于使用 Scanner 类进行输入操作。
  2. 定义主类和主方法

    • public class Main { ... }:定义主类 Main
    • public static void main(String args[]) { ... }:主方法,程序的入口。
  3. 创建输入对象和初始化变量

    • Scanner reader = new Scanner(System.in);:创建 Scanner 对象,从标准输入流(键盘)读取用户输入。
    • double sum = 0;:定义双精度变量 sum,用于累加输入的数字之和。
    • int m = 0;:定义整数变量 m,用于记录输入数字的个数。
  4. 读取输入并计算

    • while (reader.hasNextDouble()) { ... }:使用 while 循环读取用户输入的双精度数字,直到输入流中没有更多的数字。
    • double x = reader.nextDouble();:读取用户输入的下一个双精度数字并赋值给 x
    • assert x <= 100 && x >= 0 : "数据不合理";:使用断言检查输入的数字是否在 0100 之间,若不满足则输出 "数据不合理" 并终止程序。
    • m = m + 1;:增加计数器 m,表示输入的数字个数。
    • sum = sum + x;:将输入的数字累加到 sum 中。
  5. 输出结果

    • System.out.printf("%d个数的和为%f\n", m, sum);:格式化输出输入数字的总和。
    • System.out.printf("%d个数的平均值是%f\n", m, sum / m);:格式化输出输入数字的平均值。

这段代码通过 Scanner 类从标准输入读取数字,使用断言确保输入数字的范围在 0100 之间,累加这些数字并计算它们的平均值,最后格式化输出结果。

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

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

相关文章

企业网站建设方案

企业网站建设方案是企业推广和宣传的重要工具&#xff0c;可以帮助企业树立良好的形象&#xff0c;吸引更多的客户和合作伙伴。一个好的企业网站应该具备用户友好的界面设计、快速的加载速度、完善的信息分类和搜索功能、优质的内容和多样化的互动体验。下面将从以下几个方面介…

C++中的代理模式

目录 代理模式&#xff08;Proxy Pattern&#xff09; 实际应用 虚拟代理 远程代理 访问控制代理 总结 代理模式&#xff08;Proxy Pattern&#xff09; 代理模式是一种结构型设计模式&#xff0c;它提供了一个代理对象&#xff0c;充当了被访问对象的接口&#xff0c;使…

网络爬虫概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 网络爬虫&#xff08;又被称为网络蜘蛛、网络机器人&#xff0c;在某社区中经常被称为网页追逐者&#xff09;&#xff0c;可以按照指定的规则&#…

Sigir2024 ranking相关论文速读

简单浏览一下Sigir2024中与ranking相关的论文。不得不说&#xff0c;自从LLM大热后&#xff0c;传统的LTR方向的论文是越来越少了&#xff0c;目前不少都是RAG或类似场景下的工作了&#xff0c;比如查询改写、rerank等。 文章目录 The Surprising Effectiveness of Rankers Tr…

10分钟部署一个个人博客

关于vuepress这里没必要过多介绍&#xff0c;感兴趣的可以直接去官网了解&#xff0c;下面是官网首页地址截图 &#xff1a;https://v2.vuepress.vuejs.org/zh/ 透过这张图&#xff0c;我们也可以大致的对这个框架的特点有一定的认识&#xff0c;这就够了。其他的东西我们在使用…

Go TOKEN机制与跨域处理方式

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Web前端

1.HTML html语言就是一种标记语言&#xff0c;提供许多的标签&#xff0c;不同的标签功能不同&#xff0c;网页就是通过这些描述出来的。最终由浏览器 <!-- html注释 <!DOCTYPE html> 声明html语言的版本信息&#xff0c;为html5版本&#xff0c;告诉浏览器以html5…

亲测几十款随身wifi,全网最全随身WiFi避坑指南!最值得买的随随身wifi品牌推荐!

关于随身wifi我认为我是比较有发言权的&#xff0c;历经三年测评了几十种随身wifi&#xff0c;便宜的贵的&#xff0c;大牌的小厂的&#xff0c;电池款USB款等各种随身wifi。根据测试结果以及通过电商平台搜索、粉丝反馈、社交平台评价等综合测评结果。今天就跟大家分享一下&am…

设计模式-装饰器模式Decorator(结构型)

装饰器模式(Decorator) 装饰器模式是一种结构模式&#xff0c;通过装饰器模式可以在不改变原有类结构的情况下向一个新对象添加新功能&#xff0c;是现有类的包装。 图解 角色 抽象组件&#xff1a;定义组件的抽象方法具体组件&#xff1a;实现组件的抽象方法抽象装饰器&…

Vue45-分析脚手架结构

一、脚手架项目结构一览 二、src、public文件夹外的文件 2-1、babel.config.js文件 详细的配置规格&#xff1a;babel官网。 2-2、package.json包的说明书 build命令&#xff1a;代码写完了&#xff0c;最后使用build命名构建整个工程&#xff0c;将其变成浏览器能够运行的项…

2024.6.14 作业 xyt

使用手动连接&#xff0c;将登录框中的取消按钮使用第二中连接方式&#xff0c;右击转到槽&#xff0c;在该槽函数中&#xff0c;调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c…

java:spring actuator添加自定义endpoint

# 项目代码资源&#xff1a; 可能还在审核中&#xff0c;请等待。。。 https://download.csdn.net/download/chenhz2284/89437274 # 项目代码 【pom.xml】 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId&…

基于Matlab的人脸表情识别系统(GUI界面)【W5】

简介&#xff1a; 该系统是一个基于Matlab开发的人脸表情识别应用程序&#xff0c;旨在识别输入图像中的人脸表情&#xff0c;并通过直观的图形用户界面&#xff08;GUI&#xff09;向用户展示识别结果。系统结合了图像处理、机器学习和用户交互技术&#xff0c;使用户能够轻松…

第2章 Rust初体验7/8:错误处理时不关心具体错误类型的下划线:提高代码可读性:猜骰子冷热游戏

讲动人的故事,写懂人的代码 2.6.6 用as进行类型转换:显式而简洁的语法 贾克强:“大家在查看Rust代码时,可能会注意到这一句。在这里,如果我们不使用as i32,编译器会报错,因为它在u32中找不到abs()方法。这是因为prev和sum_of_two_dice都是u32类型,u32类型并不支持abs(…

Leetcode 力扣117. 填充每个节点的下一个右侧节点指针 II (抖音号:708231408)

给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL 。 初始状态下&#xff0c;所有 next 指针都…

讲透计算机网络知识(实战篇)01——计算机网络和协议

一、计算机网络和协议 1、网络和互联网络 1.1 网络、互联网、Internet 用交换机、集线器连接在一起的计算机构成一个网络。 用路由器连接多个网络&#xff0c;形成互联网。 全球最大的互联网&#xff1a;Internet。 1.2 网络举例 家庭互联网 图中的无线拨号路由器既是路由…

JAVAWEB--Mybatis02

Maven项目导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/…

【代码随想录】【算法训练营】【第35天】[134]加油站 [135]分发糖果 [860]柠檬水找零 [406]根据身高重建队列

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 35&#xff0c;连休两天~ 题目详情 [134] 加油站 题目描述 134 加油站 解题思路 前提&#xff1a;数组 思路&#xff1a;全局贪心算法&#xff1a;最小累加剩余汽油为负数&#xff0c;说明…

师彼长技以助己(6)递归思维

师彼长技以助己&#xff08;6&#xff09;递归思维 递归思维-小游戏 思维小游戏 思维 小游戏&#xff1a;1 玩一个从1或2开始往上加的游戏&#xff0c;谁加到20就赢 如何保证一定赢呢&#xff1f;我们倒推&#xff0c;要先到20的话&#xff0c;谁先到17就赢&#xff0c;如此…

深入理解 Java 中的 synchronized 代码块

目录 前言 一、synchronized的工作原理 二、使用synchronized代码块的场景 三、编写synchronized代码块的最佳实践 四、何时使用 synchronized 代码块&#xff1f; 同步&#xff1a; 不同步&#xff1a; 五、Demo讲解 1.使用synchronized代码块减小锁的粒度&#xff0c…