zoukankan      html  css  js  c++  java
  • 面向对象程序设计----JAVA语言(浙江大学MOOC)

      编程题代码,仅供参考

      第一周 类与对象

      分数

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            Fraction a = new Fraction(in.nextInt(), in.nextInt());
            Fraction b = new Fraction(in.nextInt(),in.nextInt());
            a.print();
            b.print();
            a.plus(b).print();
            a.multiply(b).plus(new Fraction(5,6)).print();
            a.print();
            b.print();
            in.close();
        }
    }
    //new对象的时候调用构造
    class Fraction
    {
        int a,b;
        //构造
        Fraction(int a, int b)
        {
            this.a = a;
            this.b = b;
            adb();//约分
        }
        //toDouble
        double toDouble()
        {
            double d = (double)a/b;
            return d;
        }
        //plus
        Fraction plus(Fraction r)
        {
            int n = this.a*r.b +r.a*this.b;
            int d = this.b * r.b;
            return new Fraction(n,d);
        }
        //multiply
        Fraction multiply(Fraction r)
        {    
            int n = this.a*r.a;
            int d = this.b*r.b;
            return new Fraction(n,d);
        }
        //print
        void print()
        {    
            if(a==b)
                System.out.println(1);
            else 
                System.out.println(a+"/"+b);    
        }
        //约分函数
        private void adb ()
        {
            int i = a > b ? b : a;
            for (;i>1;i--)
            {
                if(a%i==0&&b%i==0)
                {
                    a /= i;
                    b /= i;
                }    
            }
        }
    }
    View Code

      第二周 对象交互

      有秒计时的数字时钟

    public class Main {
    
        public static void main(String[] args) {
            java.util.Scanner in = new java.util.Scanner(System.in);
            Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
            clock.tick();
            System.out.println(clock);
            in.close();
        }
        
    }
    
    
    class Clock {
    
        private Display s = new Display(60);
        private Display m = new Display(60);
        private Display h = new Display(24);
        
        public Clock(int hour, int minute, int second)
        {
            s.setvalue(second);
            m.setvalue(minute);
            h.setvalue(hour);
        }
        
        public void tick()
        {
            
            if(s.increase())
            {
                if(m.increase())
                {
                    h.increase();
                }
            }
    
        }
        
        public String toString()
        {
            String str = String.format("%02d:%02d:%02d",h.getvalue(),m.getvalue(),s.getvalue());
            
            return str;
        }
    
    }
    
    class Display {
        
        private int value = 0;
        private int limit = 0;
        
        public Display(int limit)
        {
            this.limit = limit;
        }
        
        public boolean increase()
        {
            boolean b = false;
            value++;
            if (value == limit)
            {
                value = 0;
                b = true;
            }
            return b;
        }
    
        public int getvalue()
        {    
            return value;
        }
        public void setvalue(int x)
        {
            value = x;
        }
    }
    View Code

      第三周 对象容器

      查找里程

    import java.util.ArrayList;
    import java.util.Scanner;
      
    public class Main
    {
        public static void main(String[] args)
        {
            ArrayList<String> city = new ArrayList<String>();
            Scanner in = new Scanner(System.in);
              
            while(true)
            {   
                String cityName = in.next();
                  
                if(cityName.equals("###")){
                    break;
                }
    
                city.add(cityName); 
            }   
              
            int [][] distance = new int [city.size()][city.size()];
              
            for(int i = 0; i < city.size(); i++){
                for(int j = 0; j < city.size(); j++){
                    distance[i][j] = in.nextInt();    
                }
            }
              
            int i = city.indexOf(in.next());
            int j = city.indexOf(in.next());
              
            System.out.println(distance[i][j]); 
            in.close();
        }
    }
    View Code

      第四周 继承多态

      媒体类

    package dome;
    import java.util.ArrayList;
    public class Database {
        private ArrayList<Item> listItem = new ArrayList<Item>();
        public void add(Item item){
            listItem.add(item);
        } 
        public void list(){
            for(Item item:listItem){
                item.print();
            }
        } 
        public static void main(String[] args) {
            Database db = new Database();
            db.add(new CD("I am a CD","Even",6,24,true,"good"));
            db.add(new DVD("I am a DVD","Even",20,true,"wonderful"));
            db.add(new Mp3("I am a Mp3","Even",20,true,"talented","Hello World"));
            db.list();
        }
    }
    
    package dome;
    public class CD extends Item {
        private String artist;
        private int numofTrack;
        public CD(String title, String artist, int numofTrack, int playingTime,boolean gotIt,
        String comment) {
            super(title, playingTime, gotIt, comment);
            this.artist = artist;
            this.numofTrack = numofTrack;
        }
        public static void main(String[] args) {}
        public void print() {
            super.print();
            System.out.print("artist: "+artist+"   ");
            System.out.println("numofTrack: "+numofTrack);
        }
    }
    
    package dome;
    public class DVD extends Item {
        private String director;
        public DVD(String title, String director, int playingTime, boolean gotIt ,String comment) {
            super(title, playingTime, gotIt , comment);
            this.director = director;
        }
        public static void main(String[] args) {
        }
        public void print() {
            super.print();
            System.out.println("director: "+director);
        }
    }
    
    package dome;
    public class Mp3 extends Item{
        private String lyics;
        private String singer;
        public Mp3(String title, String singer, int playingTime, boolean gotIt, String comment,
                String lyics) {
            super(title, playingTime, gotIt, comment);
            this.lyics = lyics;
            this.singer = singer;
        }
        public static void main(String[] args) {
        }
        public void print() {
            super.print();
            System.out.print("singer: "+singer+"   ");
            System.out.println("lyics: "+lyics);
        }
    }
    
    package dome;
    public class Item {
        private String title;
        private int playingTime;
        private boolean gotIt;
        private String comment;
        public Item(String title, int playingTime, boolean gotIt ,String comment) {
            super();
            this.title = title;
            this.playingTime = playingTime;
            this.gotIt = true;
            this.comment = comment;
        }
        public static void main(String[] args) {
        }
        public void print() {
            System.out.print("title: "+title+"   ");
            System.out.print("playingTime: "+playingTime+"   ");
            System.out.print("gotIt: "+gotIt+"   ");
            System.out.print("comment: "+comment+"   ");
        }
    }
    View Code

      课程相关代码

      1、Shapes

      抽象类Shape,抽象方法draw(参数为Graphics类对象)

    package shapes;
    
    import java.awt.Graphics;
    
    //抽象类Shape
    public abstract class Shape {
        
        public abstract void draw(Graphics g);//抽象方法 draw
        
    }
    View Code

      Shape的子类Rectangle,override Shape的draw方法

    package shapes;
    
    import java.awt.Graphics;
    
    public class Rectangle extends Shape {
        private int x;
        private int y;
        private int width;
        private int height;
    
        public Rectangle(int x, int y, int width, int height) {
            this.x = x;
            this.y = y;
            this.width = width;
            this.height = height;
        }
    
        @Override
        public void draw(Graphics g) {
            g.drawRect(x, y, width, height);
        }
    
    }
    View Code

      Shape的子类Circle,override Shape的draw方法

    package shapes;
    
    import java.awt.Graphics;
    
    public class Circle extends Shape {
        private int x;
        private int y;
        private int radius;
        
        public Circle(int x, int y, int radius)
        {
            this.x = x;
            this.y = y;
            this.radius = radius;
        }
        @Override
        public void draw(Graphics g) {
            g.drawOval(x-radius, y-radius, radius*2, radius*2);
        }
    }
    View Code

      Shape的子类Line,override Shape的draw方法

    package shapes;
    
    import java.awt.Graphics;
    
    public class Line extends Shape {
        private int x1;
        private int y1;
        private int x2;
        private int y2;
        
        public Line(int x1, int y1, int x2, int y2)
        {
            this.x1 = x1; this.y1 = y1;
            this.x2 = x2; this.y2 = y2;
        }
        
        @Override
        public void draw(Graphics g) {
            g.drawLine(x1, y1, x2, y2);
        }
    
    }
    View Code

      Shape的子类Triangle,override Shape的draw方法

    package shapes;
    
    import java.awt.Graphics;
    
    public class Triangle extends Shape {
        private int[] x = new int[3];
        private int[] y = new int[3];
        
        public Triangle(int x1, int y1, int x2, int y2, int x3, int y3)
        {
            x[0] = x1; x[1] = x2; x[2] = x3;
            y[0] = y1; y[1] = y2; y[2] = y3;
        }
        
        @Override
        public void draw(Graphics g) {
            g.drawPolygon(x, y, x.length);
        }
    
    }
    View Code

      Picture类继承自JFrame类, 成员变量,高、宽、包含Shape对象的ArrayList容器,内部类ShapesPanel继承自Jpanel类,该类重写了paintComponent方法,draw Shape对象

    package shapes;
    
    import java.awt.Graphics;
    import java.util.ArrayList;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Picture extends JFrame {
        private static final long serialVersionUID = 1L;
        private int width;
        private int height;
        
        private ArrayList<Shape> listShape = new ArrayList<Shape>();
        
        private class ShapesPanel extends JPanel {
            private static final long serialVersionUID = 1L;
    
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                for ( Shape s : listShape )
                {
                    s.draw(g);
                }            
            }
            
        }
        
        public void add(Shape s)
        {
            listShape.add(s);
        }
    
        public Picture(int width, int height)
        {
            add(new ShapesPanel());
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            this.width = width;
            this.height = height;
        }
        
        public void draw()
        {
            setLocationRelativeTo(null);
            setSize(width, height);
            setVisible(true);
        }
    }
    View Code

      MyPic为测试类,测试绘制JFrame Jpanel,并在窗体上绘制Shape对象

    package shapes;
    
    public class MyPic {
        public static void main(String[] args) 
        {
            Picture pic = new Picture(420,300);
            Circle c1 = new Circle(320,40,80);
            Rectangle r1 = new Rectangle(100, 100, 100, 100);
            Triangle t1 = new Triangle(100, 100, 200, 100, 150, 50);
            Line l1 = new Line(0,205,400,205);
            Circle c2 = new Circle(200,200,50);
            pic.add(c1);
            pic.add(r1);
            pic.add(t1);
            pic.add(l1);
            pic.add(c2);
            pic.draw();    
        }
    }
    View Code

      相关知识:

      Swing 是一个为Java设计的GUI工具包,是JAVA基础类的一部分,包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表

      Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等

      理解 JFrame JPanel:什么是 JFrame JPanel ,它们都是容器, JFrame是顶级容器,可以把 JPanel放进去,JPanel有两个方法,一个是paint,一个是getPreferredSize,继承自它的类,覆盖这两个方法,paint是绘画,getPreferredSize是大小,只有JFrame,运行后,大小为0,放进JPanel运行后,为getPreferredSize的大小(JFrame要调用pack())

    import java.awt.Dimension;
    import java.awt.Graphics;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JButton;
    
    //测试面板类TestJPanel
    class TestJPanel extends JPanel{
        
        //绘画override
        @Override
        public void paint(Graphics g) {
            super.paint(g);
        }
    
        //绘画尺寸override
        @Override
        public Dimension getPreferredSize() {
            //参数修改,改变JPanel的大小
            return new Dimension(150,150);
        }
        
    }
    
    //测试类(空)
    public class Test {
        
        public static void main(String[] args){
            
            //new JPanel
            TestJPanel testJPanel = new TestJPanel();
            
            //创建窗框(带参数直接加标题)
            JFrame frame = new JFrame("Test");
            
            //窗框标题
            //frame.setTitle("Hello");
            
            //关闭按钮程序关闭
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            //窗框可否变化
            frame.setResizable(true);
                    
            // JPanel 放入窗框(绝对布局)
            frame.add(testJPanel);
            testJPanel.setLayout(null);
            
            //按钮,放到JPanel
            JButton btnNewButton = new JButton("按钮");
            btnNewButton.setBounds(29, 55, 93, 23);
            testJPanel.add(btnNewButton);
            
            //关联getPreferredSize()
            frame.pack();
            
            //显示窗体
            frame.setVisible(true);
        }
    }
    View Code
  • 相关阅读:
    微信java封装
    解决PowerDesigner 生成Sql2005-2012 找不到sysproperties表的问题
    ASP.net解析JSON例子
    c# 遍历子控件,比如Form下的group,或者panel
    修改sql2005字段
    清除grid内容的列
    sql 2000以及2005以上获取数据库中所有的表(不包括系统表)
    获取SqlServer2005表结构(字段,主键,外键,递增,描述)
    SQL SERVER 数据库实用SQL语句
    查找所有页面中的按钮
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/15400552.html
Copyright © 2011-2022 走看看