java程序设计与实践第二版?程序设计语言实践之路第二版
大家好,今天给各位分享java程序设计与实践第二版的一些知识,其中也会对程序设计语言实践之路第二版进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
java程序设计
创建一个Point类,该类有分别获取 x,y,z的值得方法,以及获得矢径的方法。
创建一个Cube的类继承Point类,并增加了获取length值以及表面及和体积的方法。
创建一个Text类,该类主要用于运行主函数,创建一个Cube的对象,就可以调用相应的方法了。
具体代码如下:
public class Point{
private double x;
private double y;
private double z;
public void setX(double x){
this.x=x;//将参数值传入对象中(x)
}
public double getX(){
return x;//获取对象中的值(x)下面类同。
}
public void setY(double y){
this.y=y;
}
public double getY(){
return y;
}
public void setZ(double z){
this.z=z;
}
public double getZ(){
return z;
}
public double distance(){
return Math.sqrt(x*x+y*y+z*z);//获取矢径的值,通过坐标的数值得出结果。
}
}
2.创建Cube类;
public class Cube extends Point{
private double length;
public void setLength(double length){
this.length=length;
}
public double getLength(){
return length;
}
public double getV(){
return length*length*length;
}
public double getS(){
return length*length*6;
}
}
3.Text类
public class Text{
public static void main(String[] args){
Cube cb=new Cube();
cb.setLength(15.0);//需要什么方法就调用什么方法输入cb.就会弹出相应的窗口选择即可。
}
}
JAVA程序设计课程作业,请高手帮忙啊
1.ABD自动装箱拆箱,byte的范围不能超过255
2.BCD false关键字必须小写,且Java不支持0转false,C/C++中支持
3.ACD abstract抽象必须被继承,不能被实例化,final类不能被继承
4.ACD+在字符串操作中用作连接符,三元运算符A? B:C若表达式A为真,则返回B的值,若A为假,返回C的值
5.AC标识符命名规则:以英文字母或_$开头,包括英文字母,数字_$,不能是Java保留关键字
6.AC父类接受子类对象,自动完成类型转换,这叫安全的向上转型
7.BC系统给引用类型赋的初值都是NULL而String是一个引用类型
8.BCD基本概念
9.BCD方法的名字和方法参数合起来叫做:方法标签,方法由方法标签唯一标示!方法的重载要求方法名相同的情况下,来区别不同的方法,所以只能靠参数的不同来区别!
10.BCD这题出得真烂,也不给出是哪里定义的paint()方法,这里姑且当做Swing中的一个方法来对待。。
以下是判断题:
1.A java只支持单继承
2.A高级的异常类放前面,后面的将无用
3.A浮点数也可以
4.B
5.A区分
6.A抽象类不一定要有抽象方法
7.B都转为数据类型最大的那个类型再运算
8.A这个表述=。=其实参数类型和个数都相同的情况下,还可以根据参数的排列来区别方法
9.A String不可变字符串!
10.A同上
11.B这个题目怎么说呢,如果父类有private成员,则子类虽然继承到了这个成员,但是无法访问它,不知道这算不算子类成员,这里如果算,那么是对的,如果不算,就是错误
12.A java.lang是包名!应该是java.lang.Object
13.A刚好说反了
14.B
15.B接口中只能有抽象方法,且不用显示的修饰为abstract
16.B
17.B
18.A抽象类可以有普通方法
19.A
20.A这个相同属性是什么意思?指属性的类型相同,那是对的,如果指属性的值相同,这个就错了
个人答案,仅供参考,错误之处,请多包涵
java 程序设计
之前有人问过同样的问题,我回答的,你们是不是同一个系的,要做课程设计?我直接粘贴过来:
我自己写了一个简单的程序,可选择落子的先后顺序,重新开始,最后判断某一方是否为五子连珠。选择落子的先后顺序,只需定义一个boolean变量,每次切换取其反值;重制棋盘或重新开始就把棋盘重新绘制一遍;判断某一方是否为五子连珠,就判断某方的每个棋子,以它为中心与之紧邻的水平,垂直,左斜,右斜四个方向是否有五子连珠。用一个二维数组position存储棋盘上的棋子情况,position[x][y]=1,0,-1分别表示棋盘的第x行第y列下有黑子,无子,白子。源代码如下:
package com.test;
import java.awt.*;
import java.util.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
public class MyFiveChess{
public static void main(String[] args){
JFrame f= new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize= Toolkit.getDefaultToolkit().getScreenSize();
int screenWidth= screenSize.width;
int screenHeight= screenSize.height;
f.setSize(screenWidth/ 2, screenHeight/ 2);
f.setLocation(screenWidth/ 4, screenHeight/ 4);
f.setTitle("FiveChess");
MyPanel panel= new MyPanel();
f.add(panel);
f.setVisible(true);
}
}
class MyPanel extends JPanel{
private static final int SIDELENGTH= 10;
private ArrayList<Ellipse2D> squares= new ArrayList<Ellipse2D>();;
private Ellipse2D current= null;
JButton jb= new JButton("重新开始");
JButton jb2= new JButton("切换先手");
boolean isBlack;
boolean first= true;
boolean isOver;
int l= 16;
int n= 20;
int bx= 20;
int by= 20;
int[][] position= new int[n+ 1][n+ 1];
public MyPanel(){
jb.addActionListener(new MyActionHandler());
jb2.addActionListener(new MyActionHandler());
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
add(jb);
add(jb2);
}
public void initMyPenal(){
squares= new ArrayList<Ellipse2D>();
current= null;
isBlack= first;
isOver= false;
position= new int[n+ 1][n+ 1];
for(int i= 0; i<= n; i++)
for(int j= 0; j<= n; j++)
position[i][j]= 0;
repaint();
}
public void paint(Graphics g){
super.paint(g);
jb.setLocation(400,150);
jb2.setLocation(400,200);
g.setColor(Color.RED);
g.setFont(new Font(null, Font.BOLD, 20));
g.drawString((first?"黑":"白")+"方下子", 400, 100);
g.setColor(new Color(240, 210, 120));
g.fillRect(bx- l, by- l, l*(n+ 2), l*(n+ 2));
g.setColor(Color.BLACK);
for(int i= 0; i<= n; i++){
g.drawLine(bx, by+ i* l, bx+ l* n, by+ i* l);
g.drawLine(bx+ i* l, by, bx+ i* l, by+ l* n);
}
Graphics2D g2=(Graphics2D)g;
isBlack= first;
for(Ellipse2D r: squares){
g2.setColor(isBlack? Color.BLACK: Color.WHITE);
g2.fill(r);
isBlack=!isBlack;
}
if(isOver){
g.setColor(Color.RED);
g.setFont(new Font("TimesRoman", Font.BOLD, 60));
g.drawString((isBlack?"白":"黑")+"方获胜", 120, 200);
}
}
public Ellipse2D find(Point2D p){
for(Ellipse2D r: squares)
if(r.contains(p))
return r;
return null;
}
public void add(Point2D p){
if(p.getX()> bx- l/ 2&& p.getX()< bx+ l* n+ l/ 2&&
p.getY()> by- l/ 2&& p.getY()< by+ l* n+ l/ 2){
for(int i= 0; i<= n; i++){
for(int j= 0; j<= n; j++){
if(position[i][j]== 1|| position[i][j]==-1) continue;
current= new Ellipse2D.Double(bx+ j* l- l/ 2,
by+ i* l- l/ 2, l, l);
if(current.contains(p)){
position[i][j]= isBlack? 1:-1;
isOver= isWin(position, isBlack, i, j)? true: false;
current.setFrame(bx+ j* l- l/ 2+ 1,
by+ i* l- l/ 2+ 1, l- 2, l- 2);
squares.add(current);
repaint();
return;
}
}
}
}
}
private class MouseHandler extends MouseAdapter{
public void mousePressed(MouseEvent event){
if(isOver) return;
current= find(event.getPoint());
if(current== null)
add(event.getPoint());
}
}
private class MyActionHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
String cmd=e.getActionCommand();
if("重新开始".equals(cmd)){
initMyPenal();
}else if("切换先手".equals(cmd)){
initMyPenal();
first=!first;
}
}
}
private class MouseMotionHandler implements MouseMotionListener{
public void mouseMoved(MouseEvent event){
Rectangle r= new Rectangle(bx- l, by- l, l*(n+ 2), l*(n+ 2));
if(r.contains(event.getPoint())){
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}else setCursor(Cursor.getDefaultCursor());
}
public void mouseDragged(MouseEvent event){}
}
public boolean isWin(int[][] state, boolean isBlack, int x, int y){//四个方向中是否有五子连珠
return isCzWin(state, isBlack, x, y)
|| isSpWin(state, isBlack, x, y)
|| isYxWin(state, isBlack, x, y)
|| isZxWin(state, isBlack, x, y);
}
public boolean isCzWin(int[][] state, boolean isBlack, int x, int y){//判断垂直方向是否有五子连珠
int n= 0;
int a=(x>= 4? x- 4: 0);
int b=(x<= state.length- 5? x+ 4: state.length- 1);
for(int i= a; i<= b; i++)
if(state[i][y]==(isBlack? 1:-1)){
if(++n== 5) return true;
} else n= 0;
return false;
}
public boolean isSpWin(int[][] state, boolean isBlack, int x, int y){//判断水平方向是否有五子连珠
int n= 0;
int a=(y>= 4? y- 4: 0);
int b=(y<= state[0].length- 5? y+ 4: state[0].length- 1);
for(int i= a; i<= b; i++)
if(state[x][i]==(isBlack? 1:-1)){
if(++n== 5) return true;
} else n= 0;
return false;
}
public boolean isZxWin(int[][] state, boolean isBlack, int x, int y){//判断左斜方向是否有五子连珠
int n= 1, a= x, b= y;
for(int i= 1; i<= 4&& a> 0&& b> 0; i++)
if(state[a- 1][b- 1]==(isBlack? 1:-1)){
n++; a--; b--;
} else break;
for(int i= 1; i<= 4&& x< state.length- 1&& y< state[0].length- 1; i++)
if(state[x+ 1][y+ 1]==(isBlack? 1:-1)){
n++; x++; y++;
} else break;
if(n>= 5) return true;
return false;
}
public boolean isYxWin(int[][] state, boolean isBlack, int x, int y){//判断右斜方向是否有五子连珠
int n= 1, a= x, b= y;
for(int i= 1; i<= 4&& a> 0&& b< state[0].length- 1; i++)
if(state[a- 1][b+ 1]==(isBlack? 1:-1)){
n++; a--; b++;
} else break;
for(int i= 1; i<= 4&& x< state.length- 1&& y> 0; i++)
if(state[x+ 1][y- 1]==(isBlack? 1:-1)){
n++; x++; y--;
} else break;
if(n>= 5) return true;
return false;
}
}
比较简略,自己可以根据情况修改,改进改进!
关于java程序设计与实践第二版的内容到此结束,希望对大家有所帮助。