java:学习一维数组并应用;学习二维数组并应用;

一、实验目的

  1. 学习一维数组并应用;
  2. 学习二维数组并应用;

二.实验环境

Idea

三、实验内容与步骤

6-1:字母逆序输出

输人一个小写字母,以该字母为第一个字母按字母表逆序输出所有26个小写字母。例如,输入“d”时,输出“dcbazyxwvutsrqpc nmlkjihgfe"。如果输入的不是小写字母,则输出error。

       package objtct;

import java.util.Scanner;

public class A {

    public static void main(char ch){

        char[]tables=new char[26];

        for(int i=0;i<tables.length;){

            if (ch>='a'){

                tables[i]=ch;

                ch--;

                i++;

            }

            else

                ch='z';

  

        }

        System.out.println(tables);

    }

    public static void main(String[] args){

        Scanner scn=new Scanner(System.in);

        char ch=scn.next().charAt(0);

        scn.close();

        if(ch<'a'||ch>'z')

            System.out.println("error");

        else

            main(ch);

    }

}

6-2:圆环四邻数v1

输人一个小写字母,以该字母为第一个字母按字母表逆序输出所有26个小写字母。例如,输入“d”时,输出“dcbazyxwvutsrqpc nmlkjihgfe"。如果输入的不是小写字母,则输出error。

import java.util.Scanner;

class Annulus {

    private int[] nums={25,17,59,37,90,29,67,88,47,51,66,39};

    public  Annulus(){}

    public  int calSum(int i){

        int sum=0;

        for(int j=0;j<4;j++)

            sum+=nums[(i+j)%12];

        return sum;

    }

    public static  void main(String[] args){

        Annulus obj =new Annulus();

        Scanner scn =new Scanner(System.in);

        System.out.print("Please input the location:");

        int loc=scn.nextInt();

        scn.close();

        if(loc>=0&&loc<12){

            System.out.println("Sum is"+obj.calSum(loc));

        }

        else

            System.out.println("error");

    }

}

6-3:数组简单查找

已知一个整型数组,输人一个整数,查找该数在数组中第一次出现的位置(即下标),并输出该数在数组中出现的总次数。若数组中没有该数,则位置为一1.次数为。

public class A {

    private int[] a={17,9,37,48,20,37,79,19,37,43};

    public  int firstLoc(int num){

        for(int i=0;i<a.length;i++){

            if(a[i]==num)

                return i;

        }

        return -1;

    }

    public int times(int num){

        int counter=0;

        for(int i=0;i<a.length;i++){

            if(a[i]==num)

                counter++;

        }

        return counter;

    }

    public static void main(String[] args){

        A obj =new A();

        int num,idx,count;

        Scanner scn=new Scanner(System.in);

        System.out.print("Please input an int number:");

        num=scn.nextInt();

        scn.close();

        idx=obj.firstLoc(num);

        count= obj.times(num);

        System.out.printf("loc=%d,times=%d\n",idx,count);

  

    }

}
 
 

6-8:杨辉三角形

根据用户输入的行数,输出指定行数的杨輝三角形。例如,输人为7,则输出如图6-14所示的7行杨辉三角形。若输人的行数不是正数,直接输出error。

import java.util.Scanner;

  

public class A {

    private int[][] arr;

    public A(){}

    public A(int n){

        arr=new int[n][n];

        int i,j;

        for(i=0;i<n;i++){

            arr[i][0]=1;

            arr[i][i]=1;

        }

        for(i=2;i<n;i++)

            for(j=1;j<i;j++)

                arr[i][j]=arr[i-1][j-1]+arr[i-1][j];

  

    }

    public void print(){

        for(int i=0;i< arr.length;i++){

            for(int j=0;j<=i;j++)

                System.out.printf("%-3d",arr[i][j]);

            System.out.println();

        }

    }

    public static void main(String[] args){

        Scanner scn=new Scanner(System.in);

        System.out.print("输入杨辉三角:");

        int n= scn.nextInt();

        scn.close();

        if(n<=0){

            System.out.println("error");

            return;

        }

        A obj=new A(n);

        obj.print();

    }

}

6-9:Excel函数模拟

import java.util.Scanner;

  

public class ExcelImplementation {

    private int [][] arr;

    public ExcelImplementation(){

        int [][] a = {{61,38,58,67,46,48,39},

                {63,31,20,37,62,52,40},

                {40,22,29,28,33,35,31},

                {68,68,32,55,23,57,41},

                {33,28,45,67,80,48,56},

                {61,38,58,67,46,48,39},

                {63,31,20,37,62,52,40}};

        this.arr=a;

    }

    public ExcelImplementation(int[][]a){

        this.arr = a;

    }

    public static int sum(int[][] a,int top,int left,int bottom,int right){

        int s = 0;

        for (int i = top;i<=bottom;i++)

            for (int j=left;j<=right;j++)

                s+=a[i][j];

        return s;

    }

  

    public static void main(String[] args) {

        ExcelImplementation obj = new ExcelImplementation();

        int top,left,bottom,right;

        Scanner scn = new Scanner(System.in);

        System.out.print("Input top left bottom right:");

        top = scn.nextInt();

        left = scn.nextInt();

        bottom = scn.nextInt();

        right = scn.nextInt();

        scn.close();

        if (top<0||top>obj.arr.length||bottom<0||bottom>obj.arr.length||top>bottom)

        {

            System.out.println("error");

            return;

        }

        if (left<0||left>obj.arr[0].length||right<0||right>obj.arr[0].length||left>right){

            System.out.println("error");

        }

        int s = ExcelImplementation.sum(obj.arr, top,left,bottom,right);

        System.out.println("sum="+s);

    }

}

6-10:二维码数组归一化

package objtct;

  

public class ArrayNormalization {

    private int[][] arr;

    private double[][] brr;

  

    public ArrayNormalization() {

        int[][] a = {{61, 38, 58, 67, 46, 48, 39},

                {63, 31, 20, 37, 62, 52, 40},

                {40, 22, 29, 28, 33, 35, 31},

                {68, 68, 32, 55, 23, 57, 41},

                {33, 28, 45, 67, 80, 48, 56},

                {61, 38, 58, 67, 46, 48, 39},

                {63, 31, 20, 37, 62, 52, 40}};

        this.arr = a;

        brr = new double[arr.length][arr[0].length];

    }

  

    public ArrayNormalization(int[][] a) {

        this.arr = a;

        brr = new double[arr.length][arr[0].length];

    }

  

    public void minmaxNormalization() {

        int min, max, i, j;

        for (j = 0; j < arr[0].length; j++) {

            min = max = arr[0][j];

            for (i = 1; i < arr.length; i++)

                if (arr[i][j] < min)

                    min = arr[i][j];

                else if (arr[i][j] > max)

                    max = arr[i][j];

            //第j类的所有元素套用公式

            for (i = 0; i < arr.length; i++)

                brr[i][j] = 1.0 * (arr[i][j] - min) / (max - min);

        }

    }

  

    public void printA() {

        int i, j;

        for (i = 0; i < brr.length; i++) {

            for (j = 0; j < brr[0].length; j++)

                System.out.printf("%3d", arr[i][j]);

            System.out.println();

        }

    }

  

    public void printB() {

        int i, j;

        for (i = 0; i < brr.length; i++) {

            for (j = 0; j < brr[0].length; j++)

                System.out.printf("%.3f ", brr[i][j]);

            System.out.println();

        }

    }

    public static void main(String[] args) {

        ArrayNormalization obj = new ArrayNormalization();

        obj.minmaxNormalization();

        obj.printB();

    }

}

6-11:矩阵乘法

import java.util.Scanner;

public class Matrix {

    public static int[][] readMatrix() {

        int i, j = 0, row, col;

        Scanner scn = new Scanner(System.in);

        System.out.println("Input rows, colums, data of array:");

        row = scn.nextInt();

        col = scn.nextInt();

        if (row <= 0 || col <= 0)

            return null;

        int[][] arr = new int[row][col];

        for (i = 0; i < row; i++)

            for (i = 0; j < col; j++)

                arr[i][j] = scn.nextInt();

        scn.close();

        return arr;

    }

    public static int[][] multiply ( int[][] a, int[][] b){

        int row, col, i, j, k;

        row = a.length;

        col = b[0].length;

        int[][] C = new int[row][col];

        for (i = 0; i < row; i++)

            for (j = 0; j < col; j++)

                for (k = 0;

                     k < a[0].length; k++)

                    C[i][j] += a[i][k] * b[k][j];

        return C;

    }

    public static void print ( int[][] arr){

        for (int i = 0; i < arr.length; i++) {

            for (int j = 0; j < arr[0].length; j++)

                System.out.printf("id ",arr[i][j]);

            System.out.println();

        }

    }

    public static void main (String[] args){

        int[][] a, b, C;

        a = Matrix.readMatrix();

        b = Matrix.readMatrix();

        if (a == null||b == null || a[0].length != b.length){

            System.out.println("error");

            return;

        }

        C = Matrix.multiply(a, b);

        System.out.println("Result:");

        Matrix.print(C);

    }

}

6-12:学生信息管理

public class A {

    private String id;

    private static String name;

    private int[] scores;

    private int sum;

    public A(){}

    public A(String id,String name,int ch,int math,int eng,int phy){

        this.id=id;

        this.name=name;

        this.scores=new int[4];

        this.scores[0]=ch;

        this.scores[1]=math;

        this.scores[2]=eng;

        this.scores[3]=phy;

    }

    public void calSum(){

        this.sum=0;

        for (int each:this.scores)

            this.sum+=each;

    }

    public void main(String[] args){

        A[] arr=new A[5];

        arr[0]=new A("s001","曹海",74,63,66,53);

        arr[1]=new A("s002","谢媛媛",90,62,84,47);

        arr[2]=new A("s003","刘山岭",83,72,84,67);

        arr[3]=new A("s004","吴亦",83,67,63,49);

        arr[4]=new A("s005","程荣",81,77,78,85);

        for (A each:arr){

            each.calSum();

            System.out.printf("%s\t%d\n",each,name,each.sum);

        }

    }

  

}

四、实验过程与分析

数组声明后实际上是在栈内存中保存了此数组的名称,接下来便是要在堆内存中配置数组所需的内存,其中元素的个数(数组的长度)是告诉编译器,所声明的数组要存放多少个元素。

多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。我们以二维数组为例看一下多维数组的初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值