实验四------实验十二

实验四 采用两个一维数组输出等腰三角形的杨辉三角

package 杨辉三角;
import java.util.Scanner;
public class 杨辉三角0 {
    public static void main(String[] args)
    {
    Scanner a = new Scanner(System.in);    
    System.out.print("输入杨辉三角的行数n:");
    int n=a.nextInt();
    int[] b=new int[100];       //创建整形数组,最大可存放100个整形
    int[] c=new int[100];       //创将两个数组,一个用来存放上一层的数据,另一个用来计算并保存本层数据
    int i,x,y;
    for(i=0;i<100;i++)        //将两个数组全部初始化,数据全为1
        b[i]=c[i]=1;
    for(i=0;i<n;i++)
        {  
            for(x=1;x<i-1;x++)
            {
                c[x]=b[x-1]+b[x];     //计算杨辉三角的过程
            }
            for(y=0;y<=n-i;y++)        //每行开头输出空格规范格式
                System.out.print(" ");
            for(x=0;x<=i-1;x++)
            {b[x]=c[x];              //进入下一层之前把本层数据转为上一层数据,给接下来的计算使用
           
            System.out.print(c[x]+" ");}
            System.out.print("\n");     //每输出一行自动换行
            }   
    }
}

总结心得:

(1)创建静态数组时,一定要定义数组的大小,我这里定义的大小为100

(2)计算杨辉三角时,要注意两个数组之间的关系,即c[x]=b[x-1]+b[x]

(3)嵌套的for循环作用:外层for循环是控制杨辉三角层数,内层for循环是具体的计算每个元素的数值

(4)输出格式,即开头的空格数,层数越多,开头的空格越少,用y<=n-i来控制次数

(5)这一步是最容易出错的,就是把计算完成的一行转成上一层并进行下一层的计算,一定不能直接用b=c来赋值,要用for循环一个一个元素的赋值

实验五 任意输入10个int类型数据,排序输出,再找出素数

public class shuzu {
 public static void main(String[] args) {
  int a[]= {11,22,5,9,8,79,42,51,13,121};
  //从小到大进行排序
    for(int j=0;j<10;j++)   
           for(int k=0;k<9-j;k++)
               if(a[k]>a[k+1])
               {
                int t;
                   t=a[k];
                   a[k]=a[k+1];
                   a[k+1]=t;
               }
    System.out.print("排序后的顺序是:");
               for(int m=0;m<10;m++)
                System.out.print(" "+a[m]);
               System.out.print("\n");
  //输出素数
  System.out.print("素数的值为:");
  int x=0;
  for(int i=0;i<10;i++) {
   for(x=2;x<a[i];x++) {
   if(a[i]%x==0)
    break;
   else
    continue;
   
   }
   if(x==a[i])
    System.out.print(a[i]+" ");
  }
  System.out.println();
 }
}

实验心得:

1.素数输出时不理解简单算法,只能用一种比较笨的方法输出结果。

2.排序输出的时候,用Java的方法输出时,语句使用上有一点不熟悉。

实验六:类的封装

import java.util.Scanner;

public class Account {

public int id;

public String name;

public int password;

public int money;

public Account(int id, String name, int password, int money) {

    this.id = id;

    this.name = name;

    this.password = password;

    this.money = money;

}

public void Display(){

    System.out.println("账户:" + id);

    System.out.println("姓名:" + name);

    System.out.println("余额:" + money);

}

public void takeMoney(){

    while(true){

Scanner sc = new Scanner(System.in);

System.out.println("请输入密码进行验证!");

int pass = sc.nextInt();

if(pass == password){

    System.out.println("请输入需要取款的金额:");

    int withdrawals = sc.nextInt();

    if(withdrawals <= money) {

money= money-withdrawals;

System.out.println("账户余额:" + money);

    }else {

System.out.println("当前余额不足!");

    }

    break;

}else {

    System.out.println("你输入的密码有误,请重新输入!");

}

sc.close();

    }

}

public void saveMoney(int inmoney){

    money = money + inmoney;

    System.out.println("此次存款为:" + inmoney);

    System.out.println("账户余额:" + money);

}

public static void main(String[] args) {

    Account acc = new Account(10000,"小明",123456,100000);

   

    Scanner sc = new Scanner(System.in);

        while(true) {

    System.out.println("---欢迎进入银行账户操作系统---");

    System.out.println("---------1银行账户信息--------");

    System.out.println("---------2取款操作------------");

    System.out.println("---------3存款操作------------");

    System.out.println("---------4退出系统------------");

    System.out.println("------------------------------");

    int choice = sc.nextInt();

switch(choice) {

case 1:

    System.out.println("---银行账户信息---");

    acc.Display();

    break;

case 2:

    System.out.println("---取款操作---");

    acc.takeMoney();

    break;

case 3:

    System.out.println("---存款操作---");

    acc.saveMoney(1000);

    break;

case 4:

    System.exit(0);

    break;

default:

    System.out.println("您的选择有误!");

    break;

}

}

}

}

实验心得:

1、类使用成员变量存储表示对象属性和状态的数据,使用成员方法表示对数据的操作,成员变量和成员方法统称为类的成员。

2、【修饰符】 class 类 【父类】【implements 接口列表】

3、声明一个对象:类 对象

4、使用new运算符可以调用类的一个构造方法,创建该类的一个实例,为实例分配内存空间并初始化,再将该实例赋值给一个对象。

5、对象获得一个实例后,就可以使用”.”运算符,引用对象中的成员变量和调用成员方法了

实验七:

package 实验包;
import java.util.Scanner;
public class Student {
    public int i=0;
 public String xing,name,zy,nj,address;
 public double date,score;
 public String xuehao;
 Scanner shuru=new Scanner(System.in);
 public Student(){}
 public Student(String xing,String name,String zy,String nj,String address,double date,double score)
 {
  this.xing=xing;
  this.name =name;
  this.zy=zy;
  this.nj=nj;
  this.address=address;
  this.date=date;
  this.score=score;
 }
 void name_chazhao(String temp) {
   System.out.println(name+" "+zy+" "+nj+" "+address+" "+date+" "+score+" "+xuehao);
 }
 void date_chazhao(double temp) {
    System.out.println(name +" "+zy+" "+nj+" "+address+" "+date+" "+score+" "+xuehao);
 }
 void address_chazhao(String temp) {
   System.out.println(name+" "+zy+" "+nj+" "+address+" "+date+" "+score+" "+xuehao);
 }
 public static void main(String[] args) {
  int i,j=1,t=1,w=0;
  int length;
  Student[] stu=new Student[5];//("李","李会通","网络工程","17级","海南万宁",1998,100);
  stu[0]=new Student("李","李会通","网络工程","17级","海南万宁",1998,100);
  stu[1]=new Student("钟","钟若文","网络工程","17级","广西南宁",1997,100);
  stu[2]=new Student("马","马元斌","网络工程","17级","青海西宁",1999,100);
  stu[3]=new Student("白","白云超","网络工程","17级","青海西宁",1999,100);
  stu[4]=new Student("牛","牛明旺","生物工程","17级","河北武安",1998,92);
  String temp=stu[0].zy;
  int []fuzhu=new int[100];
  String []zhuanye=new String[100];
  zhuanye[0]=stu[0].zy;
  length=stu.length;
  for(i=0;i<stu.length;i++){
   if(stu[i].zy!=temp){
    fuzhu[j]=j;
    zhuanye[j++]=stu[i].zy;
   }
  }
  for(i=0;i<length;i++){
   stu[i].xuehao="20";
   char [] stringArr =stu[i].zy.toCharArray();
   for(j=0;j<stringArr.length;j++){
    if(stringArr[j]>='0'&&stringArr[j]<='9'){
     stu[i].xuehao+=stringArr[j];
    }
    for(w=0;w<zhuanye.length;w++){
     if(stu[i].zy==zhuanye[w]){
      stu[i].xuehao+=fuzhu[w];
      break;
     }
    }
   }
   stu[i].xuehao+=t++;
  }
  Scanner shuru=new Scanner(System.in);
  int choice=1;
  while(choice!=0){
   System.out.println("0.退出系统\n 1.按姓名查找\n 2.按年份查找\n 3.按省市查找\n 4.统计成绩");
   System.out.println("请输入你的选择:");
   choice=shuru.nextInt();
  switch(choice){
  case 0:System.exit(0);
  case 1:System.out.println("请输入查找的姓:");
  temp=shuru.next();
  for(i=0;i<stu.length;i++) {
      if(stu[i].xing.equals(temp)){
   stu[i].name_chazhao(temp);
      break;
      }
  }//for循环的括号
  break;
  case 2:System.out.println("请输入查找的年份:");
  double temp2=shuru.nextDouble();
  for(i=0;i<stu.length;i++){
   if(stu[i].date==temp2) {
    stu[i].date_chazhao(temp2);
   }
  }
  break;
  case 3:System.out.println("请输入查找的省市:");
  temp=shuru.next();
  for(i=0;i<stu.length;i++){
   if(stu[i].address.contains(temp)==true) {
    stu[i].address_chazhao(temp);
   }
  }
  break;
  case 4:double []num=new double[300];
  for(i=0;i<300;i++){num[i]=0;}
  for(i=0;i<stu.length;i++){
   for(j=0;j<zhuanye.length;j++){
    if(stu[i].zy==zhuanye[j]){
     num[fuzhu[j]]+=stu[i].score;
    }
   }
  }
  for(i=0;i<num.length;i++){
   if(num[i]!=0){
   System.out.print(zhuanye[i]);
   System.out.println("班的总分是:"+num[i]);
   }
  }
  break;
  }//选择结构的括号
  }
 }
}

总结心得:在类里面要用this指针初始化

实验八:

package 计算圆锥体面积;

class abc extends yuanzhuiti implements Area,Volume {

final double PI=3.14;
public double volume(double r,double h) {
double v;
v=r*h/3;
return v;
}
public double area(double r,double l) {
double a;
a=PI*r*l+PI*r*r;
return a;
}
}
public class yuanzhuiti{
public static void main(String[] args) {

abc a=new abc();
abc b=new abc();
System.out.println("圆锥体A的面积为:"+a.area(2, 4));
System.out.println("圆锥体A的体积为:"+a.volume(3, 6));
System.out.println("圆锥体B的面积为:"+b.area(3, 6));
System.out.println("圆锥体B的体积为:"+b.volume(4, 8));
System.out.println("体积较大的是:"+Math.max(a.area(3, 6), b.volume(4, 8)));
}
}

package 计算圆锥体面积;


public interface Area{
public abstract double area(double r,double l);
}

package 计算圆锥体面积;

public interface Volume {
public abstract double volume(double r,double h);
}

实验心得:只要明白接口的性质,就可以完成实验

实验九:

源代码:

package 抛出异常;

public class 实验 {
public static void main(String[] args) {
point p=new point(1,3);
point p1=new point(1,2);
point p2=new point(1,1);
rectangle r=new rectangle(p,5,6);
triangle t=new triangle(p,p1,p2);
}

}
class point {
public int x,y;
public point() {}
public point(int x,int y)throws IllegalArgumentException
{
this.x=x;
this.y=y; 

if(x<0||y<0)
throw new IllegalArgumentException("无效参数");
}
}
class rectangle extends point{
public int width,length;
//public point point1(3,6);
public rectangle(point point1,int length,int width)throws IllegalArgumentException
{

this.length=length;
this.width=width;
if(length<0||width<0)
throw new IllegalArgumentException("参数无效");
}

class triangle extends point{
public triangle(point point1,point point2,point point3)throws IllegalArgumentException
{
if(((point1.x-point2.y)-(point2.x-point1.y))+((point2.x-point3.y)-(point3.x-point2.y))+((point3.x-point1.y)-(point3.y-point1.x))==0)
throw new IllegalArgumentException("无效的参数");
}
}

实验心得:明白了异常抛出的结果

实验十

package jisuanqi;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;

class counter1 extends JFrame 
{
public counter1()
{
super("计算器");
this.setSize(400,100);
this.setLocation(300,240);
this.setLayout(new FlowLayout());
TextField text1=new TextField(4);
text1.setText("1");
this.add(text1);

String proList[] = { "+","-","x" ,"%"};
TextField text;
JComboBox comboBox;
Container conPane = getContentPane();
comboBox = new JComboBox(proList);
comboBox.setEditable(true);
conPane.add(comboBox);

TextField text2=new TextField(4);
text2.setText("1");
this.add(text2);
JButton button = new JButton("=");
this.add(button);
TextField text3=new TextField(4);
text3.setText("2");

button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)

String s=comboBox.getEditor().getItem().toString();
double a= Integer.parseInt(text1.getText());
double b= Integer.parseInt(text2.getText());
if(s.equals("+")) {
double t=a+b;
String m=String.valueOf(t);

text3.setText(m);
}
else if(s.equals("-"))
{double t=a-b;
String m=String.valueOf(t);

text3.setText(m);}
else if(s.equals("x"))
{double t=a*b;
String m=String.valueOf(t);

text3.setText(m);}
else
{double t=a/b;
String m=String.valueOf(t);

text3.setText(m);}

}});
conPane.add(text3);
this.setVisible(true);
}

}

public class Counter {
public static void main(String[] args)
{
new counter1();
}
}

实验心得:了解到了计算器的制作代码和制作过程

实验十一:

package jisuanqi2;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class Jisuanqi extends Frame implements ActionListener{
public Jisuanqi() {
super("计算器");
Frame ff=new Frame("framework test");
ff.setSize(400,100);
ff.setLocation(300,240);
ff.setLayout(new FlowLayout());
final TextField f1=new TextField("10",8);
ff.add(f1);

//this.add(new Label("+"));
Label l1=new Label("+");
ff.add(l1);
//this.add(new TextField("20",8));
TextField f2=new TextField("20",8);
ff.add(f2);
//this.add(new Button("="));
Button b1=new Button("=");
ff.add(b1);
//this.add(new TextField(10));
TextField f3=new TextField(10);
ff.add(f3);
ff.addWindowListener(new myclose());
ff.setVisible(true);
b1.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{double c;
String s1=f1.getText();
double a=Integer.parseInt(s1);
String s2=f2.getText();
double b=Integer.parseInt(s2);
c=a+b;
String m=String.valueOf(c);
f3.setText(m);

}

private double Integer(String s) {
return 0;
}
});

}

class myclose implements WindowListener{

public void windowActivated(WindowEvent arg0) {

}

public void windowClosed(WindowEvent arg0) {
// TODO Auto-generated method stub

}

public void windowClosing(WindowEvent arg0) {

System.exit(0);
}

public void windowDeactivated(WindowEvent arg0) {

}

public void windowDeiconified(WindowEvent arg0) {

}

public void windowIconified(WindowEvent arg0) {


}

public void windowOpened(WindowEvent arg0) {


}

}

public static void main(String[] args) {

new Jisuanqi();
}


public void actionPerformed(ActionEvent arg0) {

}


}

实验心得:

           此次实验在上一次实验的基础上添加新的功能,用以实现为控件加监测实现驱动。在编写过程中遇到很多问题,不过在同学的帮助下解决了。对图形界面知识点的掌握还是不够熟练,以后还需要加强训练。

实验十二:

package a;


import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.Container;

public class A{
public A()

{

A jf1=new JFrame ("简历");
jf1.setLayout(new FlowLayout());

jf1.getContentPane().add(new JButton("姓名")) ;
jf1.getContentPane().add(new JTextField("LHN",43)) ;

jf1.getContentPane().add(new JButton("性别")) ;
jf1.getContentPane().add(new JTextField("男",43)) ;

jf1.getContentPane().add(new JButton("年龄")) ;
jf1.getContentPane().add(new JTextField("20",43)) ;

jf1.getContentPane().add(new JButton("民族")) ;
jf1.getContentPane().add(new JTextField("汉",43)) ;

jf1.getContentPane().add(new JButton("籍贯")) ;
jf1.getContentPane().add(new JTextField("辽宁辽阳",43)) ;

jf1.getContentPane().add(new JButton("学院")) ;
jf1.getContentPane().add(new JTextField("计算机学院",43)) ;

jf1.getContentPane().add(new JButton("专业")) ;
jf1.getContentPane().add(new JTextField("网络工程",43)) ;

JPanel p1=new JPanel();
jf1.getContentPane().add(p1);
jf1.setSize(420,310);

Container conPane = getContentPane();
jf1.add(conPane);
jf1.setVisible(true);

}

public static void main (String[] args) {

new A();
}

}

实验心得:我觉得这个实验非常有趣,让人对java学习产生了浓厚的兴趣,作为本学期最后一次实验课,使我真正体会到了java课程的魅力和对它的热爱,我又一次爱上了java程序设计这门课程。
   

猜你喜欢

转载自www.cnblogs.com/faust-coffee/p/11042630.html