Java基础(四)

MatLab Desired port was :31515解决方案 前言:使用的MatLabR2022b今天突然出现了错误,在程序中打不开文件。后尝试了下面的方法,可以解决。后面还有另一种方法,上面方法如果行不通,大家可以尝试一下。搜索栏输入:firewall.cpl。找到相关项,右键属性,设置为允许。 阅读详情

@(06.21总结)[MarkDown]

Java虚拟机 (java Virtual Machine)

  • 在一条计算机上由软件或硬件模拟的计算机或硬件模拟的计算机.JVM读取并处理经编译后的平台无关的字节码class文件
  • java编译器针对java虚拟机产生的class文件,因此是独立于平台的
  • java解释器负责将java虚拟机的代码在特定的平台上运行

第一个java程序解释

类的定义

public class HelloWorld {
    public static void mian(String[] args) {
        System.out.println("HelloWorld");
    }
}

[public] class 类名称 {}
对于类的定义有两种形式:
1. public class 定义:内名称必须和文件名称一致,在一个java文件里只能有一个public修饰的类
2. class定义:类名称可以和文件名不一致,但是生成的是class定义的名称,在一个java程序之中可以同时存在多个class的定义,编译之后会分为不同class文件.

主方法

主方法表示的是一个程序的起点,要放在一个类中,主方法定义格式如下:
public static void main(String[] args){}

系统输出

可以直接在屏幕上显示输出信息
输出不加换行: System.out.print(输出内容);
输出加换行 :System.out.println(输出内容);

classPath配置

如果要要想执行某一个java程序,那么一定要进入到程序所在的路径下才可以.
如果要想执行这个文件夹中的所有class文件,则需要进入到此目录项执行,那么如果现在希望在不同的目录下执行呢?会提示用户找不到这个类.,这时候就需要配置classpath

SET CLASSPATH=*.class文件所在路径

比如:classpath配置到d:\testjava目录之中
SET CLASSPATH=D:\testjava

结论:当使用java命令执行一个类的时候,会首先通过classpath找到指定的路径,
而后在此路径下加载所需要的class文件
但是,如果这样到处指定classpath太乱也太麻烦,所以最好的做法还是从当前路径下加载class文件,那么这个额时候往往将classpath设置为 “.”

  • 面试题:请解释classpath 和 path 的区别
    • path:是操作系统的环境属性,指的是可以执行命令的程序路径
    • classpath:是所有class文件的执行路径,java命令执行的时候将利用此路径加载所需要的class文件

标识符和关键字

  • 标识符:由字母,数字,_,$组成,其中不能以数字开头,而且不能是java的保留字
  • 定义变量(标识符)或方法时:第一个单词的首字母小写,之后每个单词的首字母大写. –> String studentName ;
  • 定义类的时候: 第一个单词的首字母大写,之后每个单词的首字母大写 –> class TestDemo {}
  • 关键字
    常用的几种类型:
  • int:
    • 取得最大值:Integer.MAX_VALUE;
    • 取得最小值:Integer.MIN_VALUE;
    • 最大值 + 1 = 最小值 最小值 - 1 = 最大值 (数据溢出)
  • double
  • byte
    • 在为byte赋值的时候,如果给出的数值范围在byte范围内,则自动将int类型变为byte类型,这种操作只是在直接赋值的情况下
    class Test {
        public static void main(String[] args) {
            byte = 20 ;//20是int类型
            System.out.println(b);
        }
    }   
  • boolean : true 和 false
    • 布尔型主要表示一种逻辑判断,布尔是一个人命,他发明了逻辑运算(AND,NOT,OR)
  • long
  • char
    • 在各个语言中,char和int可以相互转换,在c语言中转换的编码是ASCII码,范围:
      - 大写字母范围:65-90
      - 小写字母范围:97-122
    • java在定义字符的时候所使用的不是ASCII编码,而是UNICODE编码,这是一种使用十六进制定义的编码,可以表示任何文字,其中包含了中文

掌握类型之间的转换:
- 自动转型(从小到大):byte–>short–>int–>long–>float–>double
- 强制转型(从大到小):double–>float–>long–>int–>short–>byte

初见String
String本事不属于java基本数据类型,因为它属于一个类(应用型数据),但是这个类型使用起来可以像基本类型一样方便,而且使用也很多
- 字符串的定义 :
- String str = "aabbccdd";
- 字符串数组:
- String[] str = {"aa","bb","cc"};
- 字符串连接:
- String str = "Hello"; str = str + " World";

s += 1.0 和 s = s + 1.0 的区别
- s += 1.0 隐含了强制转换,,如果 s 是int类型,则这句不会报错,自动把结果强制转换为 int类型的
- 而 s = s + 1.0 则没有强制转换,如果 s 同样是 int 类型的变量,则结果是double类型,大类型转换为小类型会发生精度丢失,如果我们没有显示强制转换,编译器就会报错

程序逻辑

  • 顺序结构
    • 所有代码按修后顺序执行
  • 选择结构
    • (多)条件判断: if , if…else, if..else if …else ;
    • (多)数值判断: switch ….case ;
  • 循环结构
    • for循环,知道循环次数的时候用,用可以不用知道,直接满足条件的时候用break跳出循环
    • while循环 ,知道条件不满足的时候跳出循环
    • do…while循环,先循环一次,然后判断循环条件是否满足
    • foreach循环:一种for循环的简单写法,一般用来循环遍历数组.
//输出一个乘法表
class MultiplicationTable {
    public static void main(String[] args) {
        for(int i = 1 ; i <= 9 ; i ++){
            for(int j = 1 ; j <= i ; j ++){
                System.out.print(j+"*"+i+"="+j*i+" ");
            }
            System.out.println(" ");
        }
    }
}

打印一个三角

        int i,j,k;
        for(i = 1 ; i <= 7; i++){
            //打印前面的空格
            for(j = 1;j < 7 - i+1;j++)
                System.out.print(" ");
            for(k = 1 ;k <= i*2 -1 ;k++)
                System.out.print("*");
            //循环完一次,换行
            System.out.println();
        }

练习

6.18

  1. 输入成绩,判断等级
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-18 15:16:19
 * @version    $Id$
 */

//输入成绩,给出等级
import javax.swing.JOptionPane;
import java.util.regex.Matcher; //正则表达式的类
class Demo {
    public static void main(String[] args) {
        while(true){
            String s = JOptionPane.showInputDialog(null,"请输入成绩");
            //如果输入的是数字,则判断成绩;
            if(s.matches("^[0-9]{1,3}$")){
                int num = Integer.parseInt(s);
                //System.out.println(num);
                if(num >= 90 )
                    JOptionPane.showMessageDialog(null,"等级:A");
                else if(num >= 80)
                    JOptionPane.showMessageDialog(null,"等级:B");
                else if(num >= 70)
                    JOptionPane.showMessageDialog(null,"等级:C");
                else if(num >= 60)
                    JOptionPane.showMessageDialog(null,"等级:D");
                else if(num <= 59 )
                    JOptionPane.showMessageDialog(null,"不及格");
            }
            //输入quit时退出程序
            else if(s.equals("quit")){
                return ;
            }
            else
                JOptionPane.showMessageDialog(null,"输入错误,请重新输入");
        }
    }
}
  1. 判断一个数是不是水仙花数
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-18 17:22:48
 * @version    $Id$
 */

//判断一个数是不是水仙花数
import javax.swing.JOptionPane;

class Demo4 {
    public static void main(String[] args) {
        while(true){
            String s = JOptionPane.showInputDialog(null,"请输入三位数");
            int  num  = Integer.parseInt(s);
            //百位 num / 100 = 153 / 100 = 1
            //个位  num % 10 = 3
            //十位 (num /10)%10 = 5
            int a = num / 100 ;
            int b = num % 10 ;
            int c = (num / 10 )% 10 ;
            if(a*a*a + b*b*b + c*c*c == num){
                JOptionPane.showMessageDialog(null,"是水仙花书数");
                return;
            }
            else
                JOptionPane.showMessageDialog(null,"不是水仙花书数");
        }
    }
}
  1. 求100-999之间的水仙花数
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-18 17:40:46
 * @version    $Id$
 */

//求100-999之间的水仙花数

class Demo5 {
    public static void main(String[] args) {
        int a ;
        int b ;
        int c ;

        for(int i = 100 ; i <=999 ; i++){
            a = i / 100 ;
            b = i % 10 ;
            c = (i / 10 )% 10;
            if(a*a*a + b*b*b +c*c*c == i)
                System.out.println(i);
        }
    }
}
  1. 4.
/*
* @Author: Code.Ai
* @Date:   2015-06-17 17:25:32
* @Last Modified by:   Code.Ai
* @Last Modified time: 2015-06-17 17:46:16
*/
import javax.swing.JOptionPane;
public class Test2 {
    public static void main(String[] args) {
        String s1 = JOptionPane.showInputDialog(null,"请输入第一个数字");
        String aa = JOptionPane.showInputDialog(null,"请输入运算符号");
        String s2 = JOptionPane.showInputDialog(null,"请输入第二个数字");

        int x = Integer.parseInt(s1);
        int y = Integer.parseInt(s2);
        switch (aa) {
            case "+": {
                JOptionPane.showMessageDialog(null,x+"+"+y+"="+(x+y));
                break;
            }
            case "-" :{
                JOptionPane.showMessageDialog(null,x+"-"+y+"="+(x-y));
                break;
            }
            case "*" :{
                JOptionPane.showMessageDialog(null,x+"*"+y+"="+(x*y));
                break;
            }
            case "/" :{
                JOptionPane.showMessageDialog(null,x+"/"+y+"="+(x/y));
                break;
            }

        }


    }
}

6.19

  1. JOptionPane类
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-19 09:23:29
 * @version    $Id$
 */
import javax.swing.JOptionPane;
class JOptionPaneTest {
    public static void main(String[] args) {
        //显示一个错误对话框,该对话框显示的 message 为 'alert':
        JOptionPane.showMessageDialog(null,
                                    "alert",
                                    "alert",
                                    JOptionPane.ERROR_MESSAGE);

        //显示一个内部信息对话框,其 message 为 'information':
        JOptionPane.showInternalMessageDialog(frame,
                                            "information",
                                            "information",
                                            JOptionPane.INFORMATION_MESSAGE);

        //显示一个信息面板,其 options 为 "yes/no",message 为 'choose one':
        JOptionPane.showConfirmDialog(null,
                                    "choose one",
                                    "choose one",
                                    JOptionPane.YES_NO_OPTION);

        //显示一个内部信息对话框,其 options 为 "yes/no/cancel",message 为 'please choose one',并具有 title 信息:
        JOptionPane.showInternalConfirmDialog(frame,
                                            "please choose one",
                                            "information",
                                            JOptionPane.YES_NO_CANCEL_OPTION,
                                            JOptionPane.INFORMATION_MESSAGE);

        //显示一个警告对话框,其 options 为 OK、CANCEL,title 为 'Warning',message 为 'Click OK to continue':
        Object[] options = { "OK", "CANCEL" };
        JOptionPane.showOptionDialog(null,
                                    "Click OK to continue",
                                    "Warning",
                                    JOptionPane.DEFAULT_OPTION,
                                    JOptionPane.WARNING_MESSAGE,
                                    null,
                                    options, options[0]);

        //显示一个要求用户键入 String 的对话框:
        String inputValue = JOptionPane.showInputDialog("Please input a value");

        //显示一个要求用户选择 String 的对话框:
        Object[] possibleValues = { "First", "Second", "Third" };
        Object selectedValue = JOptionPane.showInputDialog(null,
                                                            "Choose one",
                                                            "Input",
                                                            JOptionPane.INFORMATION_MESSAGE,
                                                            null,
                                                            possibleValues,
                                                            possibleValues[0]);
    }
}
  1. 2.
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-19 14:34:00
 * @version    $Id$
 */
import javax.swing.JOptionPane;
class xunhuanTest {
    public static void main(String[] args) {
        /*int i = 0 ;
        int j = 0;
        while(i < 10){
            while(j < 10){
                System.out.print("*");
                j++;
            }
            j = 0;
            i++;
            System.out.println("");
        }*/


        /*int count = 0;
        String s ;
        int num = 0;
        int sum = 0;
        while (count < 5){
            count++;
            s= JOptionPane.showInputDialog(null,"请输入第"+count+"个人的成绩");
            num = Integer.parseInt(s);
            sum +=  num;
        }
        JOptionPane.showMessageDialog(null,"平局成绩为:"+sum / 5.0);*/



        /*int sum = 0;
        int i = 1;
        while(i < 101){
            sum = sum + i ;
            i++;
        }
        System.out.println(sum);*/

       /* int i = 1 ;
        int sum = 0;
        while (i < 100){
            sum = sum + i;
            System.out.println(i);
            i += 2 ;

        }
        System.out.println(i);
        System.out.println(sum);*/

        //3的倍数和带3的数都要敲桌子其他的报数

        /*int i = 0;
        while (i < 50) {
            i++;
            if(i % 3 == 0 ||  i/10 == 3 ||  i%10 == 3 )
                System.out.println("敲桌子");
            else
                System.out.println(i);
        }*/


        /*//输入5个数,给出最大值
        int count = 1;
        String str = "";
        int[] intArray = new int[5];
        int i = 0 ;
        int num ;
        while(count <=5 ){
            String s = JOptionPane.showInputDialog(null,"请输入第"+count+"个数");
            count++;
            //str = str + s;
            num = Integer.parseInt(s);
            intArray[i] = num;
            i++;
        }
        int mix = intArray[0] ;
        for(int j = 0 ; j < intArray.length - 1; j++){
            if(mix < intArray[j+1]){
                mix = intArray[j+1];
            }
        }
        System.out.println(mix);*/


    }
}
  1. 异或

class Demo2 {
    public static void main(String[] args) {
        int a = 5;
        int b = 8;
        //异或性质 :1.交换律;2.结合律;3.x^x = 0 , x^0 = x;4.自反性
        a = a^b;
        b = b^a;
        a = a^b;
        System.out.println("a = "+a+" b = "+b);
    }
}

6.23

  1. 输出3-100之间的素数
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-23 17:36:05
 * @version    $Id$
 */

//输出3-100之间的素数
class Test4 {
    public static void main(String[] args) {
        for(int i = 3 ; i <= 100 ; i++){
            boolean on_off = true ;
            for(int j = 2 ; j < i ; j++){
                if(i % j == 0){
                    on_off = false ;
                    //结束内层循环
                    break ;
                }
            }
            if(on_off){
                System.out.println(i);

            }
        }
    }
}
  1. 求2个数的最大公约数
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-23 16:14:27
 * @version    $Id$
 */
import javax.swing.JOptionPane;
class Test3 {
    public static void main(String[] args) {
        int a = Integer.parseInt(JOptionPane.showInputDialog("第一个数"));
        int b = Integer.parseInt(JOptionPane.showInputDialog("第二个数"));
        //求2个数的最大公约数
        int a1 = 0 ;
        for(int i = 1; i <= a && i <= b; i++){
            //找出能被a整除和b整除的数
            if(a % i == 0 && b % i == 0){
                //找出最大的公约数
                    a1 = i ;
            }
        }
        System.out.println(a1);
    }
}

6.24

  1. 数组的定义及初始化
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 09:32:41
 * @version    $Id$
 */

//数组的定义 赋值
import javax.swing.JOptionPane ;
class Test1 {
    public static void main(String[] args) {
        int[] a = new int[10];
        for(int i = 0 ; i <= 9 ; i++)
            a[i] = i+1;
        for(int j = 0 ; j <= 9 ; j++)
            System.out.println(a[j]);

        int[] a1 = new int[4];
        for(int i = 0 ; i < a1.length ;  i++){
            a1[i] = Integer.parseInt(JOptionPane.showInputDialog("请输入第"+(i+1)+"个数"));
        }
        for(int i = 0 ;i < a1.length; i++){
            System.out.println(a1[i]);
        }
    }
}
  1. 字符串数组的定义及赋值
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 10:29:45
 * @version    $Id$
 */
import javax.swing.JOptionPane;
class Test2 {
    public static void main(String[] args) {
        String[] name = new String[3];
        //String name ;
        for(int i = 0 ; i < name.length; i++){
            name[i] = JOptionPane.showInputDialog("请输入姓名");
        }
        for(int i = 0 ; i < name.length ; i++)
            System.out.println(name[i]);
    }
}
  1. 求数组中最大值
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 10:47:08
 * @version    $Id$
 */

class Test3 {
    public static void main(String[] args) {
        int[] a = {4,58,34,50,21,42};
        //找出数组中最大的数
        int count = 0;
        int max = a[0];
        for(int i = 1 ; i < a.length - 1 ; i ++){
            if(max < a[i]){
                max = a[i];
                count = i;
            }
        }
        System.out.println("最大的数是: "+ max+"最大数的下标:"+count);


    }
}
  1. 查找字符串数组中的特定值
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 11:25:51
 * @version    $Id$
 */
import javax.swing.JOptionPane;
class Test4 {
    public static void main(String[] args) {
        String[] str = {"张三","李四","王六加二","赵六","田七"};
        String s = JOptionPane.showInputDialog("找谁?");
        int count = -1 ;
        //boolean on_off = true;
        for(int i = 0 ; i < str.length ; i ++){
            //on_off = false;
            if(s.equals(str[i])){
                count  = i;
                JOptionPane.showMessageDialog(null,"找到了"+"位置在:"+(count+1));
                //on_off = true ;
                break ;
            }
        }
        if(count == -1)
            JOptionPane.showMessageDialog(null,"未找到");
    }
}
  1. 5.
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 13:26:16
 * @version    $Id$
 */
import javax.swing.JOptionPane;
class Test5 {
    public static void main(String[] args) {
        String[] nameArray = new String[4];
        int[] moneyArray = new int[4];
        for(int i = 0 ; i < nameArray.length ; i ++){
            nameArray[i] = JOptionPane.showInputDialog("请输入第"+(i+1)+"个人的名字");
            moneyArray[i] = Integer.parseInt(JOptionPane.showInputDialog("请输入第"+(i+1)+"个人的工资"));
        }
        int max = -1 ;
        int bb =  -1 ;
        for(int k = 0 ; k < moneyArray.length ; k ++){
            if(max < moneyArray[k]){
                max = moneyArray[k];
                bb = k ;
            }
        }
        String s = "姓名:           工资\n";

        for(int j = 0 ; j < nameArray.length; j++){
            /*System.out.print(nameArray[j]+" ");
            System.out.print(moneyArray[j]);
            System.out.println();*/
            s +=nameArray[j] + "          "+moneyArray[j]+"\n";
        }
        JOptionPane.showMessageDialog(null,s);
        JOptionPane.showMessageDialog(null,"工资最高:"+ max +"人:"+nameArray[bb]);
    }
}
  1. 6.
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 14:37:04
 * @version    $Id$
 */

//查找工资
import javax.swing.JOptionPane;
class Test6 {
    public static void main(String[] args) {
        String[] nameArray = {"阿一","阿二","阿三","阿四","阿五","阿六"};
        int[] moneyArray = {3500,8500,6412,8964,5105,6982};
        //要求:输入姓名,输出他的工资
        String s = JOptionPane.showInputDialog("请输入要查找的姓名:");
        int index = -1 ;
        for(int i = 0 ; i < nameArray.length ; i ++) {
            if(s.equals(nameArray[i])){
                index = i;
                break ;
            }
        }

        if(index == -1 )
            JOptionPane.showMessageDialog(null,"无此人,  滚粗");
        else
            JOptionPane.showMessageDialog(null,"姓名:"+nameArray[index] + " 工资:"+moneyArray[index]);
    }
}
  1. 删除数组中某个元素
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 15:14:20
 * @version    $Id$
 */

//删除数组中的某个元素
import javax.swing.JOptionPane;
class Test7 {
    public static void main(String[] args) {
        int[] a = {3,5,7,9,12};
        int length = a.length;
        for(int i = 0 ; i < a.length ; i ++)
            System.out.println(a[i]);
        int deletNum = Integer.parseInt(JOptionPane.showInputDialog("请输入一个数"));
        for(int j = 0 ; j < length ; j ++){
            //找出那个数,删除
            if(deletNum == a[j]) {
                //用后一个数覆盖前面的数
                for(int k = j ; k < length -1; k ++){
                    a[k] = a[k+1];
                }
            }
        }
        for(int i = 0 ; i < a.length-1 ; i ++)
            System.out.println(a[i]);
    }
}
  1. 排序
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 16:34:59
 */

/*
 *   排序
 */

class Test9 {
    public static void main(String[] args) {
        int[] a = {3,8,2,1,6};

        for(int i = 0 ; i < a.length ; i ++){
            for(int j = i + 1 ; j < a.length ; j ++){
                //第一轮,找出最小的数,放到0号位
                if(a[i] > a[j]) {
                    a[i] = a[i] ^ a[j];
                    a[j] = a[j] ^ a[i];
                    a[i] = a[i] ^ a[j];
                }
            }
        }
        for(int k = 0 ; k < a.length; k++)
            System.out.println(a[k]);
    }
}
/**
 * @author     Code.Ai (Email: Code.Ai@outlook.com)
 * @link       http://blog.youkuaiyun.com/codeai
 * @date       2015-06-24 22:31:59
 */

/*
 *   describe
 */
import javax.swing.JOptionPane;
class Demo {
    public static void main(String[] args) {
        //初始化数组
        String[] nameArray = new String[4];
        int[] moneyArray = new int[4];
        for(int i = 0 ; i < nameArray.length ; i ++){
            nameArray[i] = JOptionPane.showInputDialog("请输入第"+(i+1)+"个人的名字");
            moneyArray[i] = Integer.parseInt(JOptionPane.showInputDialog("请输入第"+(i+1)+"个人的工资"));
        }

        String s = "姓名:             工资:"+"\n";
        for(int j = 0 ; j < nameArray.length ; j++){
            System.out.println(nameArray[j]+"     "+moneyArray[j]);
            s += nameArray[j]+"                 "+moneyArray[j]+"\n";
        }
        JOptionPane.showMessageDialog(null,"排序前:\n"+s);

        //排序 按照工资排名名字,并且用弹出框弹出来.
        //因为存储名字的数组和工资的数组长度一样,只要将工资数组排序,顺带将名字也排序了,然后打印输出
        //moneyArray数组-->由大到小排序
        //第一次循环,把第一个元素同后面的元素一一对比,将第一大的数排到第一位
        String temp = null;
        for(int i = 0 ; i < moneyArray.length ; i ++) {
            for(int j = i + 1 ; j < moneyArray.length ; j++) {
                //交换数值,把大数放第一位
                if(moneyArray[i] < moneyArray[j]) {
                    //这是排的工资
                    moneyArray[i] = moneyArray[i] ^ moneyArray[j];
                    moneyArray[j] = moneyArray[j] ^ moneyArray[i];
                    moneyArray[i] = moneyArray[i] ^ moneyArray[j];

                    //排名字
                    temp = nameArray[i] ;
                    nameArray[i] = nameArray[j];
                    nameArray[j] = temp ;
                }
            }
        }
        String str = "姓名:             工资:"+"\n";
        for(int j = 0 ; j < moneyArray.length ; j++)
            str += nameArray[j]+"                 "+moneyArray[j]+"\n";
        JOptionPane.showMessageDialog(null,"排序后:\n"+str);
    }
}

自动识别象棋棋子的OpenCV应用 在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。 阅读详情

相关推荐

点云PCL库学习-双目图像转化为点云PCD并显示

文章目录 双目视觉模型 代码实现 总结 参考文章 一、双目视觉模型 和RGBD相机主动发射光线实现测距不同,双目测距原理通过配置立体摄像头(通常由左眼相机和右眼相机两个水平放置的相机组成)来获取一对同一场景中的二维图像,再基于同一空间点在两个坐标系下的视差来计算深度。双目测距的示意图和数学表达式如下所示: 双目相机的成像示意图 上述示意图描述了一个空间点在左右两目相机中位置之间的成像关系,根据相似三角形原理可得: 其中,f和b分别为相机焦距和双目相机基线,d为空间点在两个坐标系下

weixin_41957687的博客 6948

实验 编译技术综合应用-JAVA文件的自动打点

一、 实验目的 编译原理在JAVA可测试性中的应用。通过对源程序进行分析,在特定位置增加特定的打印语句,方便对程序执行过程的跟踪定位。比如:函数出入口增加打印语句。 实验要求 读取一个JAVA文件,进行语法解析,在函数出入口增加打印语句,并将改写后的程序更新到JAVA文件中去。 输入: 从控制台读入一个JAVA程序文件 输出:更新后的JAVA程序文件, 增加了打印语句 2. 输入...

foreverlove111的博客 1071

RK3568开发板Debian系统屏幕旋转终极指南:从临时调整到永久设置

本文提供了RK3568开发板在Debian系统下实现屏幕旋转的完整解决方案。从使用xrandr命令进行临时调整,到修改X11配置文件实现永久设置,详细讲解了操作步骤与核心原理。指南还涵盖了多屏异显配置、触摸屏坐标校准等进阶技巧,帮助开发者彻底解决显示方向问题。

weixin_29181861的博客 389

java实现简单的ai功能

简介 通过java实现简单的ai功能,根据输入的内容回复相应的语句 代码 package com.xiaoruanzi.http; import java.util.Scanner; public class AiDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); w...

qq_45414508的博客 4651

从零玩转GD32单片机CAN总线:手把手实战配置与源码解析

本文提供了一份基于GD32单片机的CAN总线实战入门指南。从硬件连接(GD32F103C8T6与TJA1050收发器)到软件配置,详细解析了CAN初始化、波特率计算、过滤器设置及中断收发等核心源码。通过手把手的回环测试示例与常见问题排查,帮助开发者快速掌握CAN总线通信的关键配置与调试技巧。

g5h6i7j的博客 481

APP爬虫:Airtest的使用和爬取实战详解

Airtest是一个跨平台的自动化测试工具,主要用于移动应用和游戏的UI自动化测试。它支持图像识别、触摸操作、文本输入等功能,能够模拟真实用户的操作行为。此外,Airtest还具备强大的日志记录和报告生成功能,方便开发者进行调试和分析。图像识别:通过截图匹配元素,无需依赖 UI 层次结构。跨平台支持:支持 Android、iOS 和 Windows 应用。简单易用:提供 IDE 和脚本录制功能,降低使用门槛。

数据知道的博客 9619

Java基础第一天

Java基础第一天 1、输出HelloWorld public class HelloWorld {   public static void main(String[] args) {     System.out.println(“Hello World!”);   } } 2、定义方法 输出矩形 public class Demo01Method {   public static void main(String[] args) {      printRectMethod(); } public

Prayer96的博客 191

【ArcGIS Pro微课1000例】0073:ArcGIS Pro3.5.2学习版下载及安装教程

ArcGIS Pro 3.5.2安装教程摘要:系统需Windows10及以上,8GB内存(推荐32GB)。安装步骤:1)安装.NET 8.0运行环境;2)执行主程序安装包,按向导完成基础安装;3)安装升级补丁;4)替换AfCore.dll文件并导入注册表。注意安装后删除临时文件节省空间。软件下载地址包含在百度网盘链接。安装过程需依次完成环境配置、主程序安装、补丁更新及破解步骤。

智慧空间实验室 1778

Java实现输出“Hello World”和输入输出一个字符

一、Java实现输出“Hello World!” 1.新建一个java项目,点击File->New->Java Project,输入项目名称wyy,点击finish。 2.创建好java项目之后,右击New->Class,创建一个类,mypackage为包名,Name类名Hello,首字母大写,点击finish。 3.输入代码 代码① package mypackage; public class Hello{ public static void..

qq_51879333的博客 5896

【已解决】WorkBuddy 国内版与国际版共存 + 关闭自动更新 教程

本文介绍在Windows系统中同时安装并共存WorkBuddy国内版与国际版的完整方案,通过修改product.json文件关闭启动自动更新,修复缓存配置污染问题,确保两版本互不干扰、数据独立。重点解决因共享身份标识导致的更新源错乱、进程锁冲突及自动覆盖风险,提供命令行备份与修改步骤,并强调手动升级时需避免使用应用内更新功能,以规避平台参数错位缺陷。

人生是一场修行 1513

【教程4>第6章>第26节】基于FPGA的MMSE信道估计与均衡系统实现与整体测试,并对比LS信道估计

通过前面几个章节的学习,我们完成了MMSE信道估计和均衡系统。为了进一步验证MMSE信道估计的性能,我们在系统的最后,增加一个信道估计误差计算程序。由于MMSE信道估计,其主要优势在SNR较小时提现,因此测试对比时,我们在testbench中,将SNR设置为2db。然后m值,我们不考虑一个固定值,而是一直累加,直到所设置的仿真时间结束。通过对比可以看到,MMSE信道估计性能优于LS信道估计。这样方便FPGA中的误差计算。

FPGA/MATLAB学习教程/源码/项目合作开发 1600

Java基础练习四

Java基础练习四

bao_14440的博客 220

贝叶斯网络 (Bayesian Networks) 原理与代码实例讲解

贝叶斯网络 (Bayesian Networks) 原理与代码实例讲解 1. 背景介绍 1.1 什么是贝叶斯网络? 贝叶斯网络(Bayesian Networks)是一种基于概率论的图形模型,用于表示随机

AI天才研究院 1333

java方法四要素_Java基础语法

Free Talk最近在JavaGuide博客里面兜兜转转了几天,一边等华为的实训消息,一边随便看点Java后端开发的知识。但是这一周总感觉看了就忘,而且光看也很容易走神发呆,要不然就是去打王者啥的。决定还要按照直接写的Java后端学习路线一点点走下去,一篇篇写博客敦促自己,上个月的时候写了一些JVM相关的文章,现在把之前鸽的Java语言基础先补上。这边Java基础语言主要参照菜鸟教程和JavaG...

weixin_29170089的博客 865

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java基础四

Java基础 数组操作常见问题 数组脚标越界异常(ArrayIndexOutOfBoundsException) int[] arr = new int[2]; System.out.println(arr[3]); 访问到了数组中的不存在的脚标时发生。 空指针异常(NullPointerException) int[] arr = null; System.out.println(arr[0])...

qq_44544866的博客 186

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java基础增加 四

Java基础增加四       了解和入门注解的应用:        注解是JDK1.5的新特性。   基本注解:        @SuppressWarnings               这是用于压缩警告信息        @Deprecated

人王的专栏 2325

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Java基础四】

标准ASCII字符集ASCII(American Standard Code for Information Interchange):美国信息交换标准代码,包括了英文、符号等.标准ASCI使用1个字节存储一个字符,首位是0,总共可表示128个字符,对美国佬来说完全够用.GBK(汉字内码扩展规范,国标)汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储.注意:GBK兼容了ASCII字符集.GBK规定:汉字的第一个字节的第一位须是1。

qq_61915513的博客 851

java基础四

04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do…while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } C执行流程: a:执行初始化语句 b:执行判断条件语句,看其返回值是true还是false 如果是true,就继续执行 如果是fal...

weixin_43130532的博客 183

JAVA基础四 函数

JAVA基础四 函数 函数的概念 函数就是定义在类`中的具有特定功能的一段独立小程序**,并能被多次使用。 函数定义格式 ***修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…) { 执行语句; return 返回值;/***/return关键字是用于结束该功能。并将后面的具结果返回给调用者。 //必须有return语句。 } 函数定义举例 public static int getsum(int a,int b) { return a+b; } 函数调用举例 public cl

weixin_43633742的博客 181

四、Java基础语法

1. 注释(理解) 注释是对代码的解释和说明文字,可以提高程序的可读性,因此在程序中添加必要的注释文字十分重要。Java中的注释分为三种: 单行注释。单行注释的格式是使用//,从//开始至本行结尾的文字将作为注释文字。 // 这是单行注释文字 多行注释。多行注释的格式是使用/* 和 */将一段较长的注释括起来。 /* 这是多行注释文字 这是多行注释文字 这是多行注释文字 */ 注意:多行注释不能嵌套使用。 文档注释。文档注释以/**开始,以*/结束。 /** 这个类绘制一个条形图 * @author r

huangbiaobiao的博客 122

JAVA实战———java基础四

1、数组数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组。目的是便于管理数据和方便声明。2、数组的赋值方法有三种。第一种,直接赋值。第二种,new赋值第三种,赋空值。数组声明的格式是:数据类型  数组名。3、set集合的使用set中不能存储重复的元素,可以存储null元素。如果需要存储多个重复元素,需要使用List。4、TreeSet描述的...

Fly_鹏程万里 423

(四)Java 基础语法

本文介绍了Java基础语法核心内容,包括程序基本结构、注释、标识符与关键字、数据类型、变量与常量、运算符和流程控制。重点讲解了Java程序的类定义、主方法、输出语句;基本数据类型和变量声明;常用运算符的使用规则;以及条件语句和循环结构等流程控制方式。文章以简洁实用的代码示例说明核心概念,适合Java初学者快速掌握语言基础。

m0_58161223的博客 1408

Java基础之—反射(四)

Java基础之—反射(四) 一、概述 主要介绍通过反射创建具体类的对象。 二、创建具体类对象方法 import java.lang.reflect.Constructor; class User{ public User(){} private User(String name){} public String toString() { return "User对象";...

Bruce小鬼 948

Java基础——四、关键字

编译器负责在编译阶段执行静态检查,并在生成的字节码中包含适当的标记。JVM在运行时通过字节码中的这些标记来执行相应的约束。编译期约束:在编译期,final关键字的约束确保程序的静态正确性。任何违反final规则的代码都不会通过编译。运行期约束:在运行期,JVM利用字节码中的final标记来确保变量、方法或类的不可变性。这种机制保证了final语义在整个程序生命周期内的一致性。final关键字的实现依赖于Java编译器和JVM的合作,通过在编译期和运行期的检查和优化,确保其语义得到正确执行。

qq_51936245的博客 1338

java基础(四)

1、保存字符串的数组被 final 修饰且为私有的,并且String 类没有提供/暴露修改这个字符串的方法。2、String 类被 final 修饰导致其不能被继承,进而避免了子类破坏 String 不可变。

qq_42715246的博客 541

四、Java基础复习④

字节流与字符流 在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入主要是使用Reader类完成。 在JAVA中IO操作也是有相应步骤的,以文件操作为例,主要的操作流程如下: A、 使用File类打开一个文件 B、 通过字...

SW丶DYN 152
上一篇: Java基础(三)
下一篇: Java基础(五)
dong4go
博客等级 码龄12年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值