扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
别说了,我 写个for循环 输出 1-2000,把它拆开写,输出1,2,3,4,5...... 2000
成都创新互联公司提供高防服务器租用、云服务器、香港服务器、成都移动机房托管等
2000行就到手了
然后你对你们老师说
老师,你看我这段代码厉害吗。 这段代码 省去了 昂贵的虚拟函数之间的调用。而且代码简单易懂。而且还有2000行。
/**
需求:奖客富翁游戏。
菜单为:
1.注册用户信息。填写用户名,密码,电脑随机输出一个4位
数字作为会员卡号。提示用户名,密码,及会员卡号。可选择第二步了
2.登陆。校验是否已注册(是否存在会员卡号)。如果为空,
提示用户不存在。
如果用户名通过,密码错误,提示用户名和密码不匹配。如果
验证成功结束。如果输入的用户名密码均匹配,给出登陆成功提示。
可选择第三步了。
3.先判断用户是否已登陆(是否存在会员卡)
询问是否进行抽奖,选Y,电脑随机输出5个4位
数字。如果其中有一个数字与用户卡号相同,则为中奖,奖励
人民币为卡号数字的金额。否则,谢谢参与。程序退出。
*/
import java.util.Scanner;
import java.util.Random;
public class RichPerson {
public static void main(String[] args) {
// 输出菜单。
for (int a = 0; a 6; a++) {
System.out.print("*");
}
System.out.print("欢迎进入奖客富翁系统");
for (int b = 0; b 6; b++) {
System.out.print("*");
}
System.out.print("\n\t\t1.注册\n" + "\t\t2.登录\n" + "\t\t3.抽奖\n");
for (int c = 0; c 31; c++) {
System.out.print("*");
}
// 输出菜单结束。
int caidan = 0;// 操作菜单
String name = null;// 会员注册名字
String myname = null;// 会员登录名字
String password = null;// 会员注册密码
String mypassword = null;// 会员登录密码
int number = 0;// 会员卡号
// int luckynumber=0;//幸运号码
String str = null;// 询问是否重试
// 输入数字选择菜单。
Scanner input = new Scanner(System.in);
Random output = new Random();
do {
System.out.println("\n请选择菜单:");
caidan = input.nextInt();
switch (caidan) {
case 1:
System.out.println("欢迎注册富翁,请依次输入用户名和密码");
System.out.println("用户名:");
name = input.next();
System.out.println("密码:");
password = input.next();
// 随机给出4位数的会员卡号
number = output.nextInt(8999) + 1000;
System.out.println("注册成功!您的用户名:" + name + ",密码:" + password
+ ",会员卡号:" + number + "。请牢记!");
break;
case 2:
// 先判断用户是否已注册。
if (name == null) {
System.out.println("您好,请先注册!");
break;
} else {
System.out.println("欢迎登录富翁,请依次输入用户名和密码!");
// 用户名和密码匹配校验次数设置为3次。
for (int x = 0; x 3; x++) {
System.out.println("用户名:");
myname = input.next();
if (!myname.equals(name)) {
System.out.println("用户" + myname + "不存在!请重试,剩余次数"
+ (2 - x) + "次!");
} else {
System.out.println("密码:");
}
mypassword = input.next();
if (!mypassword.equals(password)) {
System.out.println(myname + "密码错误!" + "请重试,剩余次数"
+ (2 - x) + "次!");
} else {
System.out.println("登陆成功!");
break;
}
}
}
break;
case 3:
// 判断用户是否已注册,是否已登录。
if (mypassword == null) {
System.out.println("您好,请先登录!");
break;
} else if (!mypassword.equals(password)) {
System.out.println("您好,请先重试登录!");
break;
} else if (mypassword.equals(password)) {
System.out.println("欢迎进入富翁,请问是否进行幸运抽奖(y/n)?");
String choujiang = input.next();
if (choujiang.equals("y")) {
int[] luckynumber = new int[5];
for (int m = 0; m 5; m++) {
luckynumber[m] = output.nextInt(8999) + 1000;
}
for (int m = 0; m 5; m++) {
System.out.print(luckynumber[m] + "\t");
}
System.out.println("\n" + number);
for (int m = 0; m 5; m++) {
if (number == luckynumber[m]) {
System.out.println("\n中奖!金额为:" + luckynumber);
break;
} else {
System.out.println("\n木有中奖!");
break;
}
}
这个需要建立一个数据库和配置数据源才能够正常保存游戏游戏记录
如果没有数据库的话,执行起来没有问题,
但是在猜中之后,数据不能保存
而且会报跟数据库相关的错误。。。
不过对于初学来说,足够了。。。
//猜数字游戏
//版本1.1
//作者:lymeng
//创建时间 2008/10/10
//最后修改时间 2008/10/14
import java.io.*;
import java.sql.*;
public class caishuzi
{
public static void main(String args[])
{
int suijishu; //产生的随机数
String name; //玩家的名字
int nandu=-1; //选择的难度
int caice=-1; //玩家所猜测的数字
int point=0; //记录玩家猜测的次数
int a; //判断是否保存信息成功
boolean fac=true;
String str;//用来判断是否启用了秘籍
shuru sr=new shuru();
zhuanhuan zh=new zhuanhuan();
baocun bc=new baocun();
suijishu sjs=new suijishu();
System.out.print("请输入你的名字:");
name=sr.xinxi();
System.out.println("欢迎"+name+"来到猜数字的世界,请输入整数");
System.out.println("数字越大 难度越高!");
System.out.print("难度: ");
while(fac)
{
nandu=zh.zhuanhuan1(sr.xinxi());
if(nandu-1)
{
System.out.print("你选择的难度为:"+nandu);
fac=false;
}
else
{
System.out.println("请选择正确的难度");
System.out.print("难度: ");
}
}
suijishu=sjs.suiji(nandu);
while(!fac)
{
System.out.print("请输入你要猜测的数字: ");
str=sr.xinxi();
if(str.equals("lymeng"))
{System.out.println("正确数字是: "+suijishu);}
else
caice=zh.zhuanhuan1(str);
if(caice-1)
{
if(suijishu==caice)
{
System.out.println("恭喜你 猜对啦!");
point++;
//将玩家资料保存到数据库中
a=bc.charu(name,point,nandu);
if(a-1)
System.out.println("信息保存成功");
else
System.out.println("信息保存失败");
break;
}
else if(suijishucaice)
{
System.out.println("太小了!请重新输入!");
point++;
}
else
{
System.out.println("太大了!请重新输入!");
point++;
}
System.out.println("你已经猜测了"+point+"次");
}
else
{
System.out.println("请输入一个正确的数字");
}
}
}
}
//根据难度产生随机数
class suijishu
{
public int suiji(int a)
{
int realnum;
realnum=(int)(Math.random()*50*a);
return realnum;
}
}
//记录键盘得到的信息
class shuru
{
private String str;
public String xinxi()
{
try{
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
str=bf.readLine();
str=str.trim();
}catch(Exception ex)
{System.out.println("出错啦笨蛋");}
return str;
}
}
//将键盘输入的字符转换为数字
class zhuanhuan
{
private int a;
public int zhuanhuan1(String str)
{
try{
a=Integer.parseInt(str);
return a;
}catch(Exception ex){return -1;}
}
}
class baocun
{
public int charu(String name,int point,int nandu)
{
int a=-1;
String sql;
Connection con=null;
PreparedStatement ps=null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:caishuzi");
sql="insert into user(uname,cishu,nandu) values(?,?,?)";
ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, point);
ps.setInt(3, nandu);
a=ps.executeUpdate();
//System.out.println("aaaaaaa");
ps.close();
con.close();
}catch(Exception ex)
{System.out.println("储存出错啦!");
ex.printStackTrace();
}
return a;
}
}
java项目的大小衡量标准:
微型:只是一个人,甚至是半日工作在几天内完成的软件;
小型:一个人半年内完成的 2000 行以内的程序;
中型: 5 个人在 1 年多的时间内完成的 5000-50000 行的程序;
大型: 5-10 人在两年内完成的 50000-100000 行的程序;
甚大型: 100-1000 人参加用 4-5 年完成的具有 100 , 0000 行的软件项目;
极大型: 2000-5000 人参加, 10 年内完成的 1000 万行以内的程序;
以上摘自:《软件工程概论》 郑人杰、殷人民编
这样的观点是以代码行作为计量标准的,认为代码行多的自然项目也就大了。
我有计算器程序
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
/**
* 我的计算器。MyCalculator 继承于 JFrame,是计算器的界面
*/
public class Calculator extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);
private JTextField textbox = new JTextField("0");
private CalculatorCore core = new CalculatorCore();
private ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
String label = b.getText();
String result = core.process(label);
textbox.setText(result);
}
};
public Calculator(String title) throws HeadlessException {
super(title); // 调用父类构造方法
setupFrame(); // 调整窗体属性
setupControls(); // 创建控件
}
private void setupControls() {
setupDisplayPanel(); // 创建文本面板
setupButtonsPanel(); // 创建按钮面板
}
// 创建按钮面板并添加按钮
private void setupButtonsPanel() {
JPanel panel = new JPanel();
panel.setBorder(border);
panel.setLayout(new GridLayout(4, 5, 3, 3));
createButtons(panel, new String[]{
"7", "8", "9", "+", "C",
"4", "5", "6", "-", "CE",
"1", "2", "3", "*", "", // 空字符串表示这个位置没有按钮
"0", ".", "=", "/", ""
});
this.add(panel, BorderLayout.CENTER);
}
/**
* 在指定的面板上创建按钮
*
* @param panel 要创建按钮的面板
* @param labels 按钮文字
*/
private void createButtons(JPanel panel, String[] labels) {
for (String label : labels) {
// 如果 label 为空,则表示创建一个空面板。否则创建一个按钮。
if (label.equals("")) {
panel.add(new JPanel());
} else {
JButton b = new JButton(label);
b.addActionListener(listener); // 为按钮添加侦听器
panel.add(b);
}
}
}
// 设置显示面板,用一个文本框来作为计算器的显示部分。
private void setupDisplayPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBorder(border);
setupTextbox();
panel.add(textbox, BorderLayout.CENTER);
this.add(panel, BorderLayout.NORTH);
}
// 调整文本框
private void setupTextbox() {
textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右对齐
textbox.setEditable(false); // 文本框只读
textbox.setBackground(Color.white); // 文本框背景色为白色
}
// 调整窗体
private void setupFrame() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 当窗体关闭时程序结束
this.setLocation(100, 50); // 设置窗体显示在桌面上的位置
this.setSize(300, 200); // 设置窗体大小
this.setResizable(false); // 窗体大小固定
}
// 程序入口
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Calculator frame = new Calculator("我的计算器");
frame.setVisible(true); // 在桌面上显示窗体
}
}
/**
* 计算器核心逻辑。这个逻辑只能处理 1~2 个数的运算。
*/
class CalculatorCore {
private String displayText = "0"; // 要显示的文本
boolean reset = true;
int MaxLen = 30;
private BigDecimal number1, number2;
private String operator;
private HashMapString, Operator operators = new HashMapString, Operator();
private HashMapString, Processor processors = new HashMapString, Processor();
CalculatorCore() {
setupOperators();
setupProcessors();
}
// 为每种命令添加处理方式
private void setupProcessors() {
processors.put("[0-9]", new Processor() {
public void calculate(String command) {
numberClicked(command);
}
});
processors.put("\\.", new Processor() {
public void calculate(String command) {
dotClicked();
}
});
processors.put("=", new Processor() {
public void calculate(String command) {
equalsClicked();
}
});
processors.put("[+\\-*/]", new Processor() {
public void calculate(String command) {
operatorClicked(command);
}
});
processors.put("C", new Processor() {
public void calculate(String command) {
clearClicked();
}
});
processors.put("CE", new Processor() {
public void calculate(String command) {
clearErrorClicked();
}
});
}
// 为每种 operator 添加处理方式
private void setupOperators() {
operators.put("+", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.add(number2);
}
});
operators.put("-", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.subtract(number2);
}
});
operators.put("*", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.multiply(number2);
}
});
operators.put("/", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.divide(number2, 30, RoundingMode.HALF_UP);
}
});
}
// 根据命令处理。这里的命令实际上就是按钮文本。
public String process(String command) {
for (String pattern : processors.keySet()) {
if (command.matches(pattern)) {
processors.get(pattern).calculate(command);
break;
}
}
return displayText;
}
// 当按下 CE 时
private void clearErrorClicked() {
if (operator == null) {
number1 = null;
} else {
number2 = null;
}
displayText = "0";
reset = true;
}
// 当按下 C 时,将计算器置为初始状态。
private void clearClicked() {
number1 = null;
number2 = null;
operator = null;
displayText = "0";
reset = true;
}
// 当按下 = 时
private void equalsClicked() {
calculateResult();
number1 = null;
number2 = null;
operator = null;
reset = true;
}
// 计算结果
/**
*
*/
private void calculateResult() {
number2 = new BigDecimal(displayText);
Operator oper = operators.get(operator);
if (oper != null) {
try {
BigDecimal result = oper.process(number1, number2);
displayText = result.toString();
} catch (RuntimeException e) {
clearClicked();//将计算器置为初始状态
JOptionPane.showMessageDialog(null,"不能用零作除数","出错了",JOptionPane.OK_OPTION);
//e.printStackTrace();
}
}
}
// 当按下 +-*/ 时(这里也可以扩展成其他中间操作符)
private void operatorClicked(String command) {
if (operator != null) {
calculateResult();
}
number1 = new BigDecimal(displayText);
operator = command;
reset = true;
}
// 当按下 . 时
private void dotClicked() {
if (displayText.indexOf(".") == -1) {
displayText += ".";
} else if (reset) {
displayText = "0.";
}
reset = false;
}
// 当按下 0-9 时
private void numberClicked(String command) {
if (reset) {
displayText = command;
} else {
if(displayText.length() MaxLen)
displayText += command;
else
JOptionPane.showMessageDialog(null,"输入的数字太长了","出错了",JOptionPane.OK_OPTION);
}
reset = false;
}
// 运算符处理接口
interface Operator {
BigDecimal process(BigDecimal number1, BigDecimal number2);
}
// 按钮处理接口
interface Processor {
void calculate(String command);
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
public class 贪吃蛇 extends JFrame implements ActionListener, KeyListener,Runnable {
private static final long serialVersionUID = 1L;//表明实现序列化类的不同版本间的兼容性默认的是1L,不加有异常。
private JMenuBar menuBar;
private JMenu youXiMenu,nanDuMenu,fenShuMenu,guanYuMenu;
private JMenuItem kaiShiYouXi,exitItem,zuoZheItem,fenShuItem;
private JCheckBoxMenuItem cJianDan,cPuTong,cKunNan;
private int length = 6;
private Toolkit toolkit;
private int i,x,y,z,objectX,objectY,object=0,growth=0,time;//bojecx,y是食物的坐标z为蛇前进方向。。
private int m[]=new int[50];
private int n[]=new int[50];
private Thread she = null; //静态对象蛇
private int life=0; //初始化变量 食物分数
private int foods = 0;
private int fenshu=0;
public void run(){
time=500;
for(i=0;i=length-1;i++){
m[i]=90-i*10;n[i]=60;
}
x=m[0];
y=n[0];
z=4;
while(she!=null){
check();
try{
Thread.sleep(time);
}catch(Exception ee){
System.out.println(z+"");
}
}
}
public 贪吃蛇() {
//创建新的对象
setVisible(true);
menuBar = new JMenuBar();
toolkit=getToolkit();
//设计界面元素 游戏菜单对象
youXiMenu = new JMenu("游戏菜单");
kaiShiYouXi = new JMenuItem("开始游戏");
exitItem = new JMenuItem("退出游戏");
//游戏困难对象
nanDuMenu = new JMenu("困难程度");
cJianDan = new JCheckBoxMenuItem("简单");
cPuTong = new JCheckBoxMenuItem("普通");
cKunNan = new JCheckBoxMenuItem("困难");
//游戏分数菜单对象
fenShuMenu = new JMenu("积分排行");
fenShuItem = new JMenuItem("最高记录");
//关于对象菜单
guanYuMenu = new JMenu("关于");
zuoZheItem = new JMenuItem("关于作者");
//设置关于作者菜单
guanYuMenu.add(zuoZheItem); //关于作者
//关于困难程度菜单
nanDuMenu.add(cJianDan); //难度简单
nanDuMenu.add(cPuTong); //普通
nanDuMenu.add(cKunNan); //困难
//关于游戏菜单栏
fenShuMenu.add(fenShuItem); //设置分数栏
youXiMenu.add(kaiShiYouXi); // 设置加开始游戏栏
youXiMenu.add(exitItem); // 设置游戏结束栏
menuBar.add(youXiMenu); //设置 游戏菜单栏
menuBar.add(nanDuMenu); //设置困难程度菜单栏
menuBar.add(fenShuMenu); //设置分数(积分)菜单栏
menuBar.add(guanYuMenu); //设置关于菜单栏
zuoZheItem.addActionListener(this); //监听注册
kaiShiYouXi.addActionListener(this);
exitItem.addActionListener(this);
addKeyListener(this); //添加指定的按键侦听器,以接收发自此组件的按键事件
fenShuItem.addActionListener(this);
//设置 游戏快捷键
KeyStroke keyOpen = KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK);
kaiShiYouXi.setAccelerator(keyOpen);
KeyStroke keyExit = KeyStroke.getKeyStroke('X',InputEvent.CTRL_DOWN_MASK);
exitItem.setAccelerator(keyExit);
//设置游戏框架
setJMenuBar(menuBar);
setTitle("贪吃蛇");
setResizable(false);
setBounds(300,200,400,400);
validate(); //验证有效性
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new 贪吃蛇();//菜单监听
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==kaiShiYouXi){ //菜单监听点击开始游戏
length = 6; //设置贪吃蛇的初始长度大小为 6个方块
life = 0; //生命 即分数为0
foods = 0; //所吃食物为0
if(she==null){
she=new Thread(this);
she.start();
}else if(she!=null){
she=null;
she= new Thread(this);
she.start();
}
}
if(e.getSource()==exitItem){
System.exit(0);
}
if(e.getSource()==zuoZheItem){
JOptionPane.showMessageDialog(this, "等制作"+"\n\n"+" "+"上下左右控制没有暂停哦"+"\n");
}
if(e.getSource()==fenShuItem){
JOptionPane.showMessageDialog(this,"最高记录为"+fenshu+"");
}
}
//测试一下
public void check(){
isDead();
if(she!=null){
if(growth==0){
reform(); //得到食物
}else{
upgrowth(); //生成食物
}
if(x==objectXy==objectY){
object=0;
growth=1;
toolkit.beep();
}
//食物坐标
if(object==0){
object=1;
objectX=(int)Math.floor(Math.random()*39)*10;
objectY=(int)Math.floor(Math.random()*29)*10+50;
}
this.repaint(); //重新生成食物
}
}
void isDead(){
//判断游戏是否结束的方法
if(z==4){ //Z代表蛇的移动方向 x y代表物体坐标 设置了x y 窗口大小(判断蛇是否吃到食物)
x=x+10;
}else if(z==3){
x=x-10;
}else if(z==2){
y=y+10;
}else if(z==1){
y=y-10;
}
if(x0||x390||y50||y390){ //判断是否撞墙
she=null;
}
for(i=1;ilength;i++){
if(m[i]==xn[i]==y){
she=null;
}
}
}
public void upgrowth(){
//当蛇吃到东西时的方法
if(length50){
length++; //长度累加
}
growth--;
time=time-10; //当蛇吃到一个 时间打九折 懂??? 吃的越多蛇运动的越快
reform();
life+=100;
if(fenshulife){
fenshu = life;//分数就是吃一个食物给一百分。。。
}
foods++;
}
public void reform(){
for(i=length-1;i0;i--){ // 更新蛇的每一节坐标 依次把前一节付给下一节移动坐标
m[i]=m[i-1];
n[i]=n[i-1];
}
if(z==4){
m[0]=m[0]+10;
}
if(z==3){
m[0]=m[0]-10;
}
if(z==2){
n[0]=n[0]+10;
}
if(z==1){
n[0]=n[0]-10;
}
}
public void keyPressed(KeyEvent e){ //按下键盘方向键
// z代表蛇的移动方向 设置方向快捷键
if(she!=null){
if(e.getKeyCode()==KeyEvent.VK_UP){ //上键
if(z!=2){ //先前方向不为左
z=1;
check();
}
}else if(e.getKeyCode()==KeyEvent.VK_DOWN){ //下
if(z!=1){
z=2;
check();
}
}else if(e.getKeyCode()==KeyEvent.VK_LEFT){ //左
if(z!=4){
z=3;
check();
}
}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){ //右
if(z!=3){
z=4;
check();
}
}
}
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
}
//在面板上绘制界面
public void paint(Graphics g) {
g.setColor(Color.blue); //设置背景 颜色
g.fillRect(0,50,400,400);
g.setColor(Color.yellow);//设置蛇的颜色
for(i=0;i=length-1;i++){
g.fillRect(m[i],n[i],10,10); //食物的位置
}
g.setColor(Color.green); //蛇的食物 的颜色
g.fillRect(objectX,objectY,10,10); //蛇的初始位置
g.setColor(Color.white);
g.drawString("当前 分数"+this.life,6,60);
g.drawString("当前已吃食物数"+this.foods,6,72);
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流