Java基础练习(矩阵的加减乘除运算)

news2024/12/30 1:43:47

简介

        对于有了解,但是了解不深的同学,学习Java总是感觉一看就会,一些就废。往往需要一些实操练习,来夯实我们的学习结果。九九乘法表和计算器都是在编程学习领域比较经典的案例。本文为大家讲解一下两个基础实操,熟悉一下随机数、遍历循环,返回值接收、类的调用 、静态方法和非静态方法的调用方法 。

飞机票折扣

用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折; 11月到来年4月为淡季,头等舱7折,经济舱6.5折,请开发程序计算出用户当前机票的优惠价。

public class Test1 {
    public static void main() {

        System.out.println("Java实操练习");
    }
//    public static void和public void  两种语法得区别
//    Scanner falg = new Scanner;  如何将键盘输入传入下面得方法中

//    Scanner scanner=new Scanner(System.in);

    public  double tickets(String flag,double price, int month) {
//        arge参数是否可用
//        经济舱价格
        double y = 0 ;
//        头等舱价格
        double z = 0 ;
//        判断是否旺季
        boolean x = month>=5 && month <=10;
        //           如果是旺季 头等舱、经济舱对应打折
        if (x) {
//               经济舱折扣后价格
            y = price * 0.9;
//               头等舱折后价格
            z = price * 0.85;
            if (flag.equals("经济舱")){
                return y;
            }else {
                return z;
            }

        } else {
//               经济舱折扣后价格
            y = price * 0.65;
//               头等舱折后价格
            z = price * 0.7;
            if (flag.equals("经济舱")){
                return y;
            }else {
                return z;
            }
        }

    }


// 使用if语法  进行变换写法
    public static double if_tickets(String flag,double price, int month) {
        //        arge参数是否可用
//        经济舱价格
        double y = 0 ;
//        头等舱价格
        double z = 0 ;
//        判断是否旺季
        boolean x = month>=5 && month <=10;
        if (x){
            //               经济舱折扣后价格
            y=price*0.9;
//               头等舱折后价格
            z=price*0.85;
            if(flag .equals( "经济舱")){
                return y;
            }else {
                return z;
            }
        }else {
            //               经济舱折扣后价格
            y=price*0.65;
//               头等舱折后价格
            z=price*0.7;
            if(flag .equals( "经济舱")){
                return y;
            }else{
                return z;
            }
        }

    }

}

以上案例中主要考察学者对于 一class多method  的创建语法,if判断分支的语法,以及关键字viod 对于return 返回值的影响,

在创建method中如何有设置返回值,viod需要更改为以返回值同一数据类型。

在创建static method中如果带有static 称之为静态方法,没有带static 的称之为非静态方法。两种区别主要在于调用上的区别。以下通过举例调用方法,进行展示其区别。

method 调用

public class MethodCall {
    public static void main(String[] args) {
        //        调用一个静态main method   可以直接调用
        Test1.main();
//        调用非静态method tickets 需先创建一个Test1实例
        Test1 x1 =new Test1();
        double x2=x1.tickets("经济擦仓",4548,02);
//        调用静态方法可以直接调用
        double x3 = Test1.if_tickets("经济擦仓", 4548, 02);
        System.out.println(x3);
        System.out.println(x2);
    }
}

效果展示

思考

如何通过 

import java.util.Scanner;

模块,进行键盘输入对应的值传入method方法中去。

如何通过

import java.util.Random;

模块,进行随机输入对应的值传入method方法中去。

       

关键字说明 

在以上类中我们创建了三个method 分别是

public static void main(String[] args) 、
public  double tickets、
public static double if_tickets、

这个以main方法的为例说明一下各个关键字

public:这个关键字表示这个方法可以从任何地方被访问。这意味着你可以通过类名来调用这个方法,而不需要创建类的实例。
static:这个关键字表示这个方法是一个静态方法。静态方法可以被类直接调用,而不需要创建类的实例。此外,静态方法不能访问非静态变量和方法。
void:这个关键字表示这个方法没有返回值。如果一个方法返回值类型为 void,那么它将不会返回任何值。
main:这是 Java 程序的入口地址,Java 虚拟机运行程序的时候首先找的就是 main 方法。只有有 main 方法的 Java 程序才能够被 Java 虚拟机运行,可理解为规定的格式。

矩阵的加减乘除运算 

本文在Java使用list的方法创建3*3的矩阵,在java中也有二维数组可以创建创建3*3的矩阵。

这里涉及到一些简单的矩阵运算规则,不再做解释。

//java 在矩阵运算中的实现
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Matrix {
    public static void main(String[] args) {
//        生成一个A矩阵
        Random r1 = new Random();
        int a1 =r1.nextInt(100)-50;
        int a2 =r1.nextInt(100)-50;
        int a3 =r1.nextInt(100)-50;
        int a4 =r1.nextInt(100)-50;
        int a5 =r1.nextInt(100)-50;
        int a6 =r1.nextInt(100)-50;
        int a7 =r1.nextInt(100)-50;
        int a8 =r1.nextInt(100)-50;
        int a9 =r1.nextInt(100)-50;
        List<Integer> list1=new ArrayList<>();
        list1.add(a1);
        list1.add(a2);
        list1.add(a3);
        List<Integer> list2=new ArrayList<>();
        list2.add(a4);
        list2.add(a5);
        list2.add(a6);
        List<Integer> list3=new ArrayList<>();
        list3.add(a7);
        list3.add(a8);
        list3.add(a9);
        List<List> lists=new ArrayList<>();
        lists.add(list1);
        lists.add(list2);
        lists.add(list3);
        System.out.println("矩阵名称为:Lists");
        System.out.println("以下打印的是a1,a2,a3,a4,a5,a6,a7,a8,a9的对应值");
        System.out.println("a1:"+a1+",\n"+"a2:"+a2+",\n"+"a3:"+a3+",\n"+"a4:"+a4+",\n"+"a5:"+a5+",\n"+"a6:"+a6+",\n"+"a7:"+a7+",\n"+"a8:"+a8+",\n"+"a9:"+a9);
//        创建一个矩阵
        for (int i = 0; i < lists.size(); i++) {
            System.out.println(lists.get(i));
        }

//        生成一个B矩阵
        int b1 =r1.nextInt(100);
        int b2 =r1.nextInt(100);
        int b3 =r1.nextInt(100);
        int b4 =r1.nextInt(100);
        int b5 =r1.nextInt(100);
        int b6 =r1.nextInt(100);
        int b7 =r1.nextInt(100);
        int b8 =r1.nextInt(100);
        int b9 =r1.nextInt(100);
        List<Integer> listb1=new ArrayList<>();
        listb1.add(b1);
        listb1.add(b2);
        listb1.add(b3);
        List<Integer> listb2=new ArrayList<>();
        listb2.add(b4);
        listb2.add(b5);
        listb2.add(b6);
        List<Integer> listb3=new ArrayList<>();
        listb3.add(b7);
        listb3.add(b8);
        listb3.add(b9);
        List<List> listsb = new ArrayList<>();
        listsb.add(listb1);
        listsb.add(listb2);
        listsb.add(listb3);
        System.out.println("矩阵名称为:Listsb");
        System.out.println("以下打印的是b1,b2,b3,b4,b5,b6,b7,b8,b9的对应值");
        System.out.println("b1:"+b1+",\n"+"b2:"+b2+",\n"+"b3:"+b3+",\n"+"b4:"+b4+",\n"+"b5:"+b5+",\n"+"b6:"+b6+",\n"+"b7:"+b7+",\n"+"b8:"+b8+",\n"+"b9:"+b9);
//(a1*b1)+(a2*b4)+(a3*b7)
        for (int i1 = 0; i1 < listsb.size(); i1++) {
            System.out.println(listsb.get(i1));
        }
//实现矩阵Listsb+Lists
        List<Integer> listc1=new ArrayList<>();
        listc1.add(a1+b1);
        listc1.add(a2+b2);
        listc1.add(a3+b3);
        List<Integer> listc2=new ArrayList<>();
        listc2.add(a4+b4);
        listc2.add(a5+b5);
        listc2.add(a6+b6);
        List<Integer> listc3=new ArrayList<>();
        listc3.add(a7+b7);
        listc3.add(a8+b8);
        listc3.add(a9+b9);
        List<List> listsc = new ArrayList<>();
        listsc.add(listc1);
        listsc.add(listc2);
        listsc.add(listc3);
        System.out.println("实现矩阵Listsb+Lists");
        for (int ic = 0; ic < listsc.size(); ic++) {
            System.out.println(listsc.get(ic));
        }
        List<Integer> listd1=new ArrayList<>();
        listd1.add(a1-b1);
        listd1.add(a2-b2);
        listd1.add(a3-b3);
        List<Integer> listd2=new ArrayList<>();
        listd2.add(a4-b4);
        listd2.add(a5-b5);
        listd2.add(a6-b6);
        List<Integer> listd3=new ArrayList<>();
        listd3.add(a7-b7);
        listd3.add(a8-b8);
        listd3.add(a9-b9);
        List<List> listsd = new ArrayList<>();
        listsd.add(listd1);
        listsd.add(listd2);
        listsd.add(listd3);
        System.out.println("实现矩阵Listsb-Lists");
        for (int id = 0; id < listsd.size(); id++) {
            System.out.println(listsd.get(id));
        }
        List<Integer> liste1=new ArrayList<>();
        liste1.add((a1*b1)+(a2*b4)+(a3*b7));
        liste1.add((a1*b2)+(a2*b5)+(a3*b8));
        liste1.add((a1*b3)+(a2*b6)+(a3*b9));
        List<Integer> liste2=new ArrayList<>();
        liste2.add((a4*b1)+(a5*b4)+(a6*b7));
        liste2.add((a4*b2)+(a5*b5)+(a6*b8));
        liste2.add((a4*b3)+(a5*b6)+(a6*b9));
        List<Integer> liste3=new ArrayList<>();
        liste3.add((a7*b1)+(a8*b4)+(a9*b7));
        liste3.add((a7*b2)+(a8*b5)+(a9*b8));
        liste3.add((a7*b3)+(a8*b6)+(a9*b9));
        List<List> listse = new ArrayList<>();
        listse.add(liste1);
        listse.add(liste2);
        listse.add(liste3);
        System.out.println("实现矩阵Listsb*Lists");
        for (int ie = 0; ie < listse.size(); ie++) {
            System.out.println(listse.get(ie));
        }
    }
}

方法调用

public class MethodCall {
    public static void main(String[] args) {
        //        调用一个静态main method   可以直接调用
        Test1.main();
//        调用非静态method tickets 需先创建一个Test1实例
        Test1 x1 =new Test1();
        double x2=x1.tickets("经济擦仓",4548,02);
//        调用静态方法可以直接调用
        double x3 = Test1.if_tickets("经济擦仓", 4548, 02);
        System.out.println(x3);
        System.out.println(x2);
        Matrix.main(new String[]{"矩阵调用"});
    }
}

关键字说明

这里的Matrix.main(new String[]{"矩阵调用"});  是以上创建的阵列的method名称且为main , 在我们创建main的时候会默认生成一个

String[] args 

代表一个名为args的变量,其数据类型为字符串数组。由于创建main是一个static 所以是可以直接调用的,而不需要创建实例。但是在main创建的时候有默认的参数,所以在调用的时候需要再次填入一个参数的值。

在Matrix类main的创建关键字中使用了viod 代表其方法没有返回值,所以也不需要创建变量对其返回值进行接收。

思考

使用Java的 二维数组实现以上同样的功能。

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

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

相关文章

在线JSON转EXCEL工具

全天下的柔情共十分&#xff0c;你占八分。你喊我名字那晚的凉风秋月算一分&#xff0c;其余所有占一分。 推荐 在线JSON转Excel工具 - WeJSON 工具简介 在线JSON转Excel工具&#xff0c;可以快速将JSON数组数据一键转换为Excel格式&#xff0c;方便数据的可视化和交流。 所…

基于Qt设计的邮件收发管理系统(垃圾邮件识别)

基于Qt设计的邮件收发管理系统(垃圾邮件识别) 一、项目背景 随着互联网的发展,邮件成为人们沟通交流不可或缺的一部分。然而,随之而来的是大量的垃圾邮件和欺诈邮件,给人们的生活造成了很大的困扰和威胁。为了解决这个问题,本文提出了一种基于Qt设计的朴素贝叶斯算法邮件收…

SSL证书品牌 Positive

Positive品牌的SSL证书具有以下优势&#xff1a; 1. 安全性&#xff1a;Positive SSL证书提供强大的加密算法&#xff0c;确保通过网站传输的数据得到保护&#xff0c;防止被未经授权的第三方窃取或篡改。 2. 可信度&#xff1a;Positive SSL证书由全球知名的认证机构颁发&am…

AIGC|一文揭秘如何利用MYSCALE实现高效图像搜索?

图像搜索已成为一种流行且功能强大的能力&#xff0c;使用户能够通过匹配功能或视觉内容来查找相似的图像。随着计算机视觉和深度学习的快速发展&#xff0c;这种能力得到了极大的增强。 本文主要介绍如何基于矢量数据库MYSCALE来实现图像搜索功能。 一、MySCALE简介 MyScale 是…

win10下yolov6 tensorrt模型部署

TensorRT系列之 Win10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署…

uniapp\ taro 如何使用 UnoCSS 原子化css

unocss-preset-weapp 相较于 tailwindcss 和 windicss, unocss的性能和可扩展性都优于它们 UnoCSS小程序预设 unocss-preset-weapp 内置 transformer 用于兼容小程序 transformerClass 转换转义类名&#xff0c;解决小程序不支持\\&#xff0c;\:&#xff0c;\[&#xff0c;…

瞬态抑制二极管TVS的工作原理?|深圳比创达电子EMC(下)

TVS二极管与Zener二极管同样作为过压保护&#xff0c; TVS着重浪涌电压的钳位保护&#xff0c;具有抗大电流冲击的能力;Zener管着重于稳压效果&#xff0c;具有浪涌电流小&#xff0c;保护电压稳的特点&#xff0c;两者在原理与保护特性有所区别&#xff0c;同时在个别应用领域…

回收站删除的文件怎么恢复?快来学习这3个方法!

“有时候我会先将一些不重要的文件放入回收站中&#xff0c;等需要用到时再将它还原。但是我刚刚不小心把回收站清空了&#xff0c;还有方法可以帮我找回我的数据吗&#xff1f;” 在使用电脑时&#xff0c;如果我们删除文件&#xff0c;这些文件会被先收入回收站中。如果我们是…

MODBUS-TCP转MODBUS-RTU通信应用(S7-1200和串口服务器通信)

在学习本博客之前,大家需要熟悉MODBUS-TCP和MODBUS-RTU通信,这2个通信的编程应用,大家可以查看下面文章链接: MODBUS-RTU通信 MODBUS-RTU通信协议功能码+数据帧解读(博途PLC梯形图代码)-CSDN博客MODBUS通信详细代码编写,请查看下面相关链接,这篇博客主要和大家介绍MODB…

商用工程运输车辆智能交通精细数字化管理中的大数据应用

在物联网蓬勃发展的今天&#xff0c;智能交通、智能工业控制、远程控制汽车基本不是什么难题&#xff0c;在集团、企业、都会涉及用车及安全管理&#xff0c;就拿车队管理系统来说&#xff0c;它的主要作用是进行车辆定位、机械诊断、驾驶员行为监测等&#xff0c;并能及时发现…

ubuntu18.04 RTX3060 rangnet++训练 bonnetal语义分割

代码链接&#xff1a; https://github.com/PRBonn/lidar-bonnetal 安装anaconda环境为 CUDA 11.0&#xff08;11.1也可以&#xff09; anaconda环境如下 numpy1.17.2 torchvision0.2.2 matplotlib2.2.3 tensorflow1.13.1 scipy0.19.1 pytorch1.7.1 vispy0.5.3 opencv_python…

工业高频读写器和超高频读写器怎么选?

在工业领域中&#xff0c;RFID技术是常用的信息采集和传输的方式之一&#xff0c;RFID根据频段还可以分为低频、高频和超高频等&#xff0c;在选择具体的频段应用时&#xff0c;很多企业却毫无头绪。接下来本文就高频RFID和超高频RFID读写器的特点进行分析&#xff0c;帮助企业…

Python综合练习题

题目 创建一个系统&#xff0c;里面可以添加学生、添加班级、查看班级里的学生&#xff0c;在控制台输出 效果图 关键代码 完整代码 # -*- coding: UTF-8 -*-#功能 Functionality0 #学生 Student [刘榕榕0, 秦英姿1, 王家乐0, 孟德赫3, 门子伟4, 明展宇5] #班级 Class [大…

景联文数据标注平台助力标注效率翻倍,年处理图像数据过亿

图像标注是指为图像添加文字描述或标签&#xff0c;包括物体、场景、情感、活动等多种内容&#xff0c;以帮助计算机更好地理解和处理图像信息的过程&#xff0c;提高图像处理的自动化程度和准确性&#xff0c;常用于计算机视觉、图像识别等领域。 选择图像标注工具时&#xff…

思必驰:离线语音识别芯片简介

一&#xff0e;使用场景 夏天某个凉爽的早晨&#xff0c;当你躺在床上玩着手机&#xff0c;突然一阵困意袭来&#xff0c;原来已经中午了&#xff0c;此时你一个侧身准备休息&#xff0c;突然发现一阵酷热袭来&#xff0c;你定睛一看&#xff0c;原来是风扇没有打开&#xff0c…

工业以太网RFID设备有哪些部分组成?

随着近年来物联网不断发展&#xff0c;RFID技术已经逐渐成为物联网中的关键技术&#xff0c;利用RFID技术可以实现实时数据采集、物流自动化、远程设备管理等功能&#xff0c;大大提高了物联网提取数据和物体识别能力的智能化水平。 工业RFID读写器作为数据采集最关键的一个设备…

使用Pytorch Geometric 进行链接预测代码示例

PyTorch Geometric (PyG)是构建图神经网络模型和实验各种图卷积的主要工具。在本文中我们将通过链接预测来对其进行介绍。 链接预测答了一个问题:哪两个节点应该相互链接?我们将通过执行“转换分割”&#xff0c;为建模准备数据。为批处理准备专用的图数据加载器。在Torch Ge…

书客护眼台灯好用吗?书客、柏曼、飞利浦多维度测评

护眼台灯作为一种辅助照明设备&#xff0c;旨在提供舒适的光线环境&#xff0c;以减轻眼睛疲劳和保护视力健康。它通常采用柔和的光线、调节亮度和色温的功能&#xff0c;以及一些附加的设计特点&#xff0c;如可调节灯颈、遮光罩等。虽然护眼台灯并不能完全解决眼部问题&#…

YOLOv8改进实战 | 更换主干网络Backbone(一)之轻量化模型Ghostnet

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

应用在冷链运输中的数字温度传感芯片

冷链运输&#xff08;Cold-chain transportation&#xff09;是指在运输全过程中&#xff0c;无论是装卸搬运、变更运输方式、更换包装设备等环节&#xff0c;都使所运输货物始终保持一定温度的运输。冷链运输要求在中、长途运输及短途配送等运输环节的低温状态。它主要涉及铁路…