package day2;
import javax.swing.JFrame;
/**
* JFrame---窗体---相框
* JPanel---画布---相片
* 导包:
* 1.手动导包 import...
* 2.自动导包 Ctrl+shift+o
* 3.点击红色的叉号
* @author Administrator
*
*/
public class TurtLepro {
public static void main(String[]args){
//1.创建一个窗体对象
JFrame frame = new JFrame();
//2.给窗体添加标题
frame.setTitle("忍者神龟");
//3.给窗体添加大小
frame.setSize(1400,800);
//4.窗体居中显示
frame.setLocationRelativeTo(null);
//类名.静态常量 减少内存的占用
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//画布
TJPanel tj = new TJPanel();
//添加画布到画板上
frame.add(tj);
//添加鼠标的监听事件
frame.addMouseListener(tj);
tj.addMouseListener(tj);
//5.显示窗体
frame.setVisible(true);
}
}
package day2;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
public class TJPanel extends JPanel implements KeyListener,MouseListener,Runnable{
//乌龟的初始位置
int x = 300;
int y = 200;
//乌龟脚的初始位置
int k1 = 300,t1 = 200;//左上
int k2 = 300,t2 = 200;//右上
int k3 = 300,t3 = 200;//左下
int k4 = 300,t4 = 200;//右下
//加水的波纹
int[]a = new int[300];//300个x坐标
int[]b = new int[300];//300个y坐标
//构造方法:方法名和类同名:无任何返回值类型:无参构造
public TJPanel(){
//随机产生位置
for(int i = 0;i < a.length;i++){
a[i] = (int)(Math.random()*1400);
b[i] = (int)(Math.random()*800);
}
Thread t = new Thread(this);
t.start();//启动线程
}
//Graphics g:画笔
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
//修改底部背景颜色
this.setBackground(Color.cyan);
/* //给画笔设置颜色
g.setColor(Color.RED);
//画矩形
g.drawRect(20, 150, 400, 200);
//画实心
g.fillRect(120, 200, 160, 80);
//画圆
g.drawOval(30, 250, 100, 80);
g.fillOval(130,300,100,100);
//画奥迪车标
g.drawOval(50,60,70,70);
g.drawOval(100,60,70,70);
g.drawOval(150,60,70,70);
g.drawOval(200,60,70,70);
//画线段
g.drawLine(80, 80, 300, 350);
*/
//画波纹
g.setColor(Color.BLUE);
for(int i = 0;i < a.length;i++){
g.drawString("~~~~~~~~~",a[i],b[i]);
}
//画头部
g.setColor(Color.GREEN);
g.fillOval(x, y, 70, 100);
//加眼睛
g.setColor(Color.BLACK);
g.fillOval(x + 10, y + 30, 10, 15);
g.fillOval(x + 50, y + 30, 10, 15);
//加舌头
g.setColor(Color.RED);
g.fillOval(x + 30, y, 8, 6);
//画脚 左上
g.setColor(Color.GREEN);
g.fillOval(k1 - 85, t1 + 75, 60, 70);
//画脚 右上
g.fillOval(k2 + 85 , t2 + 75, 60, 70);
//画脚 左下
g.fillOval(k3 - 85 , t3 + 235, 60, 70);
//画脚 右下
g.fillOval(k3 + 85 , t3 + 235, 60, 70);
//加乌龟壳
g.setColor(Color.ORANGE);
g.fillOval(x - 66, y + 69, 200, 250);
//壳加文字
g.setColor(Color.BLUE);
//设置字体的大小
Font font = new Font(Font.DIALOG,Font.BOLD,30);
g.setFont(font);
g.drawString("靳 洁",x - 20,y + 180);
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
//System.out.println("1111111");
//ctrl+alt+下键
x = e.getX();
y = e.getY();
k1 = e.getX();
t1 = e.getY();
k2 = e.getX();
t2 = e.getY();
k3 = e.getX();
t3 = e.getY();
k4 = e.getX();
t4 = e.getY();
repaint();//重绘,重复调用paint方法
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void run() {
// TODO Auto-generated method stub
//System.out.println("线程启动");
while(true){
for(int i = 0;i < a.length;i++){
a[i]--;
if(a[i] < 0){
a[i] = 1400;
}
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
repaint();
}
}
}
package day3;
/**
* 冒泡排序:
* 1.声明一个数组,存放8个元素;
* @author Administrator
*
*/
public class OperatorDemo23 {
public static void main(String[] args) {
bubbleSorted();
}
public static void bubbleSorted(){
int []arr = {15,3,4,6,2,90,123,1};
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr.length-1-i;j++){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println("排序后数组:");
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
}
}
package day3;
/**
* 数组越界异常
*
* 空指针异常
*访问了数组中不存在的索引
* NullPointerException
* 数组的引用没有指向对象,但是却在操作对象中的元素。
* @author Administrator
*
*/
public class OperatorDemo22 {
public static void main(String[] args) {
int[] arr = {1,3,5};
//访问数组中的元素
//System.out.println(arr[3]);
try{
arr = null;
System.out.println(arr[1]);
}catch(NullPointerException e){
System.out.println("发生了空指针异常");
}catch(Exception e){
e.printStackTrace();
}
System.out.println("1234");
System.out.println("1234");
System.out.println("1234");
}
}
package day3;
import java.util.Scanner;
/**
* 数组的应用:
*
* 身份证案例
*
* @author Administrator
*
*/
public class OperatorDemo21 {
public static void main(String[]args){
//身份证的前17位----用户输入
int card[] = new int[17];
//1-17对应的系数
int data[] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
//身份证的最后一位系数
char[] code = {'1','0','x','9','8','7','6','5','4','3','2'};
Scanner sc = new Scanner(System.in);
int sum = 0;
for(int i = 0;i < card.length;i++){
System.out.println("请输入身份证前17位:");
card[i] = sc.nextInt();
}
for(int i = 0;i < card.length;i++){
sum += card[i] * data[i];
}
System.out.println("最后一位:" + code[sum % 11]);
}
}
package day3;
/**
* s 数组
* 数组的初始化:
* 必须先初始化,后使用
* 初始化:数组中的数组元素进行分配内存空间,并且为每一个数组元素进行赋值
*
* 两种:
* 1.动态初始化:初始化的时候,只指定数组的长度,由系统来为数组分配初始值;
* 2.静态初始化:初始化的时候,指定了每一个数组元素的初始化的值,由系统来决定数组的长度;
*
* Java中的内存分配
* 栈:
* 存储的是局部变量;
* 局部变量就是定义在方法中的变量;
* 使用完毕之后就会被释放,立即回收;
*
* 堆:
* 存储的就是new出来的对象:实体;
* 每一个对象都是有地址值的;
* 每一个对象的数据都是有默认值的;
* byte,short,,long--0
* float,double-------0.0
* char-----------‘u0000’
* Boolean----------false
* 引用类型-----------null
* 使用完毕之后,会在垃圾回收起空闲的时候,被回收。
*
* 方法区:
* 本地方法:(和系统有关系)
* 寄存器:(给cpu使用的)
* @author Administrator
*
*/
public class OperatorDemo20 {
public static void main(String[]args){
//数组的初始化:
int[] arr = new int[6];//0,0,0,0,0,0
arr[0] = 1;//1,0,0,0,0,0
//静态初始化
int[] arr1 = {1,3,5};
int[] arr3;
//arr3 = {1,3,4};//错误的
arr3 = new int[]{1,3,4};//正确的
System.out.println(arr3[1]);
for(int i = 0;i < arr3.length;i++){
System.out.println(arr3[i]);
}
}
}
package day3;
/**
* 使用do-while完成猜数字的游戏
* @author Administrator
*
*/
import java.util.Scanner;
public class OperatorDemo19 {
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int num = (int)(Math.random()*1000+1);
System.out.println("请输入猜的数字:");
int guess = sc.nextInt();
do{
if(guess > num){
System.out.println("猜大了");
}else{
System.out.println("猜小了");
}
System.out.println("继续猜");
guess = sc.nextInt();
}while(guess != num);
if(guess == num){
System.out.println("恭喜你猜对了");
}
}
}