那些年,我们一起做过的 Java 课后练习题(46 - 50)

实例 46

题目

两个字符串连接程序。

分析

要实现两个字符串的连接有多种方法,其中最简单的就是利用 + 来实现。

实现

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/7 15:29
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example46
 * @description :
 */

public class Example46 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入一个字符串");
        String str1 = scanner.nextLine();
        System.out.println("再输入一个字符串");
        String str2 = scanner.nextLine();
        System.out.println("连接后的字符串为:" + str1 + str2);
    }
}

结果

实例 47

题目

读取 7 个数(1 - 50)的整数值,每读取一个值,就打印该值个数的 *

分析

主要就是考验循环和打印的用法,难度不大。

实现

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/7 15:29
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example47
 * @description :
 */

public class Example47 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = 0;
        int count = 1;
        while (count <= 7) {
            do {
                System.out.println("输入一个 1 - 50 之间的整数");
                num = scanner.nextInt();
            } while (num < 1 || num > 50);
//            打印 * 号
            for (int i = 0; i < num; i++) {
                System.out.print("*");
            }
            System.out.println();
            count++;
        }
    }
}

结果

实例 48

题目

某公司采用公用电话传递数据,数据是四位整数,在传递过程中是加密的,加密规则如下:每位数字都加上 5 然后用和除以 10 的余数来代替该数字,再将第一位和第四位交换,第二位和第三位交换。

分析

实现起来很简单,只不过要把步骤分开:

  1. 首先输入四位数之后,将其个位、十位、百位、千位都分解出来;
  2. 然后将各位都加上 5,然后求和后除以 10 的余数代替各位上的数;
  3. 最后则是将第一位和第四位交换,第二位和第三位交换;

实现

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/7 15:29
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example48
 * @description :
 */

public class Example48 {
    public static int SIZE = 4;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入一个四位的整数");
        int num = scanner.nextInt();
        int[] arr = new int[SIZE];
//        千位
        arr[0] = num / 1000;
//        百位
        arr[1] = num % 1000 / 100;
//        十位
        arr[2] = num / 10 % 10;
//        个位
        arr[3] = num % 10;

//        每个数字都加上 5,然后除以 10 的余数代替
        for (int i = 0; i < SIZE; i++) {
            arr[i] += 5;
            arr[i] %= 10;
        }

//        交换 1,3 位,2,4 位
        for (int i = 0; i <= 1; i++) {
            int tmp = arr[i];
            arr[i] = arr[SIZE - 1 - i];
            arr[SIZE - 1 - i] = tmp;
        }

        System.out.println("加密后的数字");
        for (int i = 0; i < SIZE; i++) {
            System.out.print(arr[i]);
        }
    }
}

结果

实例 49

题目

计算字符串中子串出现的次数。

分析

分别输入两个字符串,然后利用 equals() 对比字符串中等同于子字符串的情况,出现则次数加一,不过要注意的是当两个字符串均为空的时候,此时无法比较。

实现

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/7 15:29
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example49
 * @description :
 */

public class Example49 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("输入字符串");
        String str = scan.nextLine();
        System.out.println("输入子字符串");
        String subStr = scan.nextLine();
        // 计数
        int count = 0;

        if (str.equals("") || subStr.equals("")) {
            System.out.println("无输入字符串或子串,无法比较");
            System.exit(0);
        } else {
            // 对比字符串中出现子字符串,统计次数
            for (int i = 0; i < str.length() - subStr.length(); i++) {
                if (subStr.equals(str.substring(i, subStr.length() + i))) {
                    count++;
                }
            }
        }

        System.out.println("子串在字符串中出现 " + count + " 次!");
    }
}

结果

实例 50

题目

有五个学生,每个学生有 3 门课程成绩,从键盘上输入数据(学号、姓名、三门课程成绩),计算出平均成绩,并把原有数据和计算出的平均分数存放于磁盘中。

分析

分析题目,将功能逐一拆分,先是要定义一个二维数组来存放五个学生的 6 个信息,然后分别输入五个学生的前 5 个信息,接着计算平均成绩,最后则是写入磁盘,值得注意的是,在读写文件时要注意流的关闭。

实现

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/7 15:29
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example50
 * @description :
 */

public class Example50 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        存放 5 个学生的信息
        String[][] info = new String[5][6];
        for (int i = 0; i < info.length; i++) {
            System.out.println("输入第 " + (i + 1) + " 个学生的学号");
            info[i][0] = scanner.next();
            System.out.println("输入第 " + (i + 1) + " 个学生的姓名");
            info[i][1] = scanner.next();
            for (int j = 0; j < 3; j++) {
                System.out.println("输入第 " + (i + 1) + " 学生的第 " + (j + 1) + " 个成绩");
                info[i][j + 2] = scanner.next();
            }
        }

//        求平均分,并存入数组
        float avg = 0.0f;
        int sum = 0;
        for (int i = 0; i < 5; i++) {
            {
                sum = 0;
                for (int j = 2; j < 5; j++) {
                    sum += Integer.parseInt(info[i][j]);
                }
                avg = (float) sum / 3;
                info[i][5] = String.valueOf(avg);
            }
        }

//        写入磁盘
        String line = null;
        File file = new File("./student.txt");
        if (file.exists()) {
            System.out.println("文件已存在");
        } else {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        try (BufferedWriter output = new BufferedWriter(new FileWriter(file))) {

            for (int i = 0; i < 5; i++) {
                for (int j = 0; j < 6; j++) {
                    line = info[i][j] + "\t";
                    output.write(line);
                }
                output.write("\n");
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("数据已写入~");
    }
}

结果

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

村雨遥

众筹一毛买键盘!

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

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

打赏作者

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

抵扣说明:

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

余额充值