java实验四1~4

实验一:

1.请先阅读下面的程序,确定它的输出结果。再将程序上机运行,验证自己分析的输出结果是否正确。

class Yuan

{ int r; String name; static int z= 5;

  Yuan(int r){ this.r=r; }

 int a(){ return z*r*r; }

  int p(){ return 5*z*r; }  

  void value (){ name="china"; }

 }

class testOverride extends Yuan

{ int h; String name;

testOverride(int r,int h1) { super(r); h=h1; }

int a(){ value();  return 2*super.a()+p()*h; }

void value()

{ super.value();

name="America";

System.out.println("\""+this.name+"\"");

System.out.println(super.name);

}

public static void main(String args[])

{ Yuan y= new Yuan(4);

Yuan yz= new testOverride(5,2);

    System.out.println(y.a());

  System.out.println(yz.p());

   System.out.println(yz.a());        

 }

}

 

输出结果:

80
125
"America"
china
500

实验二:

2.请先阅读下面的程序,确定它的输出结果。再将程序上机运行,验证自己分析的输出结果是否正确。

public class TestTransOfValue

{public static void main(String args[])

 { double val;

StringBuffer sb1, sb2;

String sb3;

char s[]={'a','p','p','l','e'};

val = 5.8;

sb1 = new StringBuffer("apples");

sb2=new StringBuffer("pears");

sb3 = new String("pear");

modify(val, sb1, sb2,sb3,s);

System.out.println(val);

System.out.println(sb1);

System.out.println(sb2);

System.out.println(sb3);

System.out.println(s);

}

public static void modify(double a, StringBuffer r1,

             StringBuffer r2,String r3,char s[] )

  { a = 6.8;  

    r1.append(" taste good");

    r2=null;

    r3="banana";

    s[2]='R';       }

}

输出结果:
5.8
apples taste good
pears
pear
apRle

3.编写一个程序,其中设计一个矩阵类Matrix,最后计算:

要求Matrix满足:

1)Matrix的属性有:

m,n:int型,矩阵的行、列数;

ma:int型两维数组,放置矩阵的数据。

2)Matrix的方法有:

Matrix (int m , int n ):构造方法,设置矩阵的行数和列数;

cheng(Matrix a):将当前矩阵与形参矩阵相乘,最后返回乘的结果(Matrix对象); void print():输出矩阵。

代码如下:

import java.util.Scanner;
import java.io.*;
class Matrix{
    int m,n;
    int ma[][];
       Matrix() {
         System.out.println("请输入行数和列数:");
        Scanner reader=new Scanner(System.in);
        this.m=reader.nextInt();
         this.n=reader.nextInt();
         this.ma=new int [this.m][this.n];
         System.out.println("请输入矩阵:");
        for(int i=0;i<this.m;++i) {
            for(int j=0;j<this.n;++j) {
                this.ma[i][j]=reader.nextInt();
            }
        }
    }
    Matrix(int m,int n){
           this.m=m;
           this.n=n;
    }
    Matrix cheng(Matrix B) {
        int nB=B.ma[0].length;
        Matrix ans =new Matrix(m,nB);
        ans.ma=new int[m][nB];
        for(int i=0;i<m;++i) {
            for(int j=0;j<nB;++j) {
                for(int k=0;k<n;++k) {
                    ans.ma[i][j]+=ma[i][k]*B.ma[k][j];
                }
            }
        }
        return ans;
    }
    static void print(Matrix ans){
         System.out.println("矩阵相乘结果如下:");
        for(int i=0;i<ans.m;++i) {
            for(int j=0;j<ans.n;++j){
                System.out.print(ans.ma[i][j]);
                System.out.print(" ");
            }
            System.out.println();
        }
    }
    public static void main(String[] args){
        Matrix a=new Matrix();
        Matrix b=new Matrix();
        print(a.cheng(b));
    }

}

运行界面截图

4.请仔细阅读下面的程序,分析程序的结构和输出结果。再将程序上机运行,验证输出结果。(注意重点理解:内部类、对象内部类、静态内部类)

public class Outer

{ public Outer(){System.out.println("OuterClass Object!");}

  private class  Inner1

   { private  Inner1(String s){ System.out.println(s);} }

  static class Inner2

{ Inner2(String s){ System.out.println(s);} }

  public static void  main(String[] args)

   { Outer ob= new T();

     Outer.Inner1 ib1 = ob.new Inner1("InnerClass1 Object!");

     Inner2 ib2=new Inner2("InnerClass2 Object!");

    }

  }

请再尝试将:

Outer.Inner1 ib1 = ob.new Inner1("InnerClass1 Object!");

改为:

    ob.Inner1 ib1 = ob.new Inner1("InnerClass1 Object!");

看有什么变化。

输出结果:

OuterClass Object!
InnerClass1 Object!
InnerClass2 Object!

改变之后:
报错:Cannot resolve symbol 'Inner1'(无法解析符号'Inner1')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值