第一部分:猜数游戏--
练习面向对象使用3步走,创建对象,实例化对象,使用对象
第二部分:权限修饰符探究
第三部分:构造方法探究
第四部分:缺省,this,super,类修饰符探究
第一部分
文件为 MyTest ,Test GameVal Game
MyTest.java(写了游戏思路)
import java.util.Scanner; public class MyTest { public static void main(String[] args){ } //猜数游戏方法过程,算是思路汇总 //首先是游戏开始前需要设置上下限,产生一个随机数。 //然后是最多10次,最少一次的循环, // 每次循环先拿到键盘输入的一个数据(这里需要保证数据的正确性合理性) // 然后将拿到的数据和随机数比较,若等于提示用户猜测成功,结束循环,若不等于,给用户提示 //每次循环结束,循环次数+1,减少一次循环 //理想条件下,结束条件是:10都没有猜成功或10次中有一次猜测成功。 public void bullsCow(String[] args){ //定义下限 int from = 0; //定义上限 int to = 100; //随机数范围[from,to] int num = (int)(Math.random()*(to-from+1)+from); //for 计数型循环 最多10次 for(int time = 10;time>0;time--){ //提示用户 System.out.printf("请输入一个在[%d,%d]范围内的整数",from,to); //创建对象--若循环次数过大,请在外面创建局部变量 Scanner scn = new Scanner(System.in); //拿到键盘输入,这个数需要用与比较 int temp = scn.nextInt(); if(temp==num){ System.out.println("你猜对了"); //停止循环 break; } else{ if(temp>num){ System.out.println("您输入的数据过大"); } else{ System.out.println("您输入的数据过小"); } } } //for循环结束,代表游戏结束 System.out.println("游戏结束"); } //不定个数形参和数组对比 public void method(int ...a){ } }
面向对象练习
Game.java类(表示整个游戏)
import java.util.Scanner; public class Game { //成员属性,开始的值 private int from = 0; //游戏等级 private int state = 1; //每个等级增加的量 private int add = 100; //次数 private int fre = 10; public void menu() { while (true) { System.out.println("0设置。1开始游戏。2退出"); System.out.print("请输入0-2选项"); Scanner scanner = new Scanner(System.in); while (!scanner.hasNextInt()) { scanner.nextLine(); } switch (scanner.nextInt()) { case 0: setmenu(); break; case 1: start(); break; case 2: System.out.println("退出成功"); return; default: System.out.print("您的输入有问题"); throw new RuntimeException("menu选择出现问题"); } } } public void setmenu() { Scanner scanner = new Scanner(System.in); System.out.printf("0设置开始值,当前开始值%d%n", this.from); System.out.printf("1设置游戏等级,当前游戏等级值%d%n", this.state); System.out.printf("2设置等级差距,当前游戏等级差距%d%n", this.add); System.out.printf("3设置次数,当前游戏次数%d%n", this.fre); System.out.printf("其它任意整数退出%n"); if (scanner.hasNextInt()) { switch (scanner.nextInt()) { case 0: System.out.print("请输入任意开始值"); if (scanner.hasNextInt()) { setFrom(scanner.nextInt()); } break; case 1: System.out.print("请输入游戏等级游戏等级至少为1"); if (scanner.hasNextInt()) { setState(scanner.nextInt()); } break; case 2: System.out.print("请输入等级差距,差距最小为100"); if (scanner.hasNextInt()) { setAdd(scanner.nextInt()); } break; case 3: System.out.print("请输入游戏次数,最多10次,最少5次"); if (scanner.hasNextInt()) { setFre(scanner.nextInt()); } break; default: break; } } } public void start() { int num = (int) (Math.random() * (state * add + 1)) + from; // String min = String.valueOf(from); // String max = String.valueOf(from+state*add); GameVal gameVal = new GameVal(); gameVal.max = from+state*add; gameVal.min = from; for (int i = fre; i > 0; ) { System.out.printf("您还有%d次机会,下次建议输出范围%d-%d%n", i--,gameVal.min,gameVal.max); if (isNum(num,gameVal)) { break; } } end(); } //调用的方法怎么回调 //Integer String 是不行的 //就是把min,max也修改了。传递参数 不能是Inter, String 基本数据类型 //暂时通过参数不能用一种和是类型 //我创建了一种新的类型 GameVal //面向对象思想--类型不够,直接创建。 public boolean isNum(int num,GameVal gameVal) { System.out.printf("请输入一个%d-%d的整数", from, state * add + from); Scanner in = new Scanner(System.in); if (in.hasNextInt()) { int temp = in.nextInt(); if (temp == num) { System.out.println("恭喜你,输入成功"); return true; } else { if (num > temp) { if(temp++>gameVal.min){ gameVal.min = temp; } System.out.printf("您输入的数太小了,"); } else { if(gameVal.max>temp--){ gameVal.max = temp; } System.out.printf("您输入的数太大了,"); } } } else { in.nextLine(); System.out.println("请输入一个整数"); } return false; } public void end() { System.out.println("游戏结束"); System.out.print("输入0退出"); Scanner s = new Scanner(System.in); if (s.nextInt() != 0) { start(); } } public void setFrom(int from) { this.from = from; } public void setState(int state) { if (state >= 1) { this.state = state; } } public void setAdd(int add) { if (add >= 100) { this.add = add; } } public void setFre(int fre) { if (fre >= 10) { this.fre = fre; } } }
GameVal.java(为了改变值,然后设计了这个类)
public class GameVal { int min; int max; }
Test.java(测试类)
public class Test {
public static void main(String[] args){
Game game = new Game();
game.menu();
}
}