黑马程序员技术交流社区
标题: 此次活动的代码题在今晚十点半结束,明天统一进行加分! [打印本页]
作者: 赵海洋 时间: 2013-7-15 15:42
标题: 此次活动的代码题在今晚十点半结束,明天统一进行加分!
本帖最后由 神之梦 于 2013-7-16 12:27 编辑
由于22期即将开班,23期报名火热,特此推出22,23期和云舞联合重磅答题活动!!!
加分说明:
1、两次发题目之间是答题时间,跟下一次发题时间一样时或之前,答题有效。 没有做代码题的抢答分扣一半,超时的,抢答题总共扣除2/3。
2、代码题上限五分。
3、我先加的是有效的楼层,对于没有加分的楼主要么是答案错误,要么是不在有效答题时间。
对于不在答题时间的,我会根据代码题的情况统一进行扣分,在最后一个楼层根据统计情况进行加分。
第一部分:抢答!
1.一共十三道题,第一个正确回答技术分加2分,其他正确回答加一分,错误回答不给分。
2.十三道题每隔5分钟版主会更新一道题,一直到十三道题更新完毕,结束抢答,版主会统计谁是超级幸运星!
3.赶快复习知识点吧,注意,都是基础题!!!
第二部分:代码题!
1. 抢答结束后会有一道代码题,代码题不分先后顺序,回答时间在晚上10:00之前即可。
2.由于考虑今晚工作量问题,所以给大家一个小时的代码题答题时间。代码题是基础题,请自己作答,勿抄袭、百度类似题等。
注意:
1,抢答题时间初步定为晚上8:00~9:00,请互相转告,勿失良机哦~~~
2,如果做了抢答题而没有做代码题,分数减半,同样两道题都做的,分数在原来基础上加1。
3,代码题初步定为晚上9:05分给题,请大家按时刷新看题。
4.以上分数都是指技术分。
5.请大家在做完抢答题后回复自己都是在哪几楼回答的问题,方便版主们统计,谢谢大家。
6.加分会在活动结束后由版主统计,加分。请大家答题后不要着急,预计工作量会有些大,所以请大家耐心等待加分。
7.如答题后有未加分情况,请联系版主。
代码题:
请用java语言做一个猜拳小程序。
1.需要用到的知识点:泛型、继承、封装、多态、伪随机数、IO流等
2.定义三个人物相对应不同的困难程度。
3.完全开放式答题,你能做成什么样的,就做成什么样
4.结果要截图出来,不在一个楼的注明是哪几个楼
作者: 神之梦 时间: 2013-7-15 20:00
1,送分题,早起的鸟有虫吃:java面向对象的三个特征?
作者: hx32 时间: 2013-7-15 20:01
封装、继承、多态
作者: 以防万一 时间: 2013-7-15 20:03
面向对象的三大特征:封装,继承、多态
1.封装:只隐藏对象的属性和实现细节,仅对外提供公共访问方式
好处:将变化隔离、便于使用、提高复用性、提高安全性
原则:将不需要对外提供的内容隐藏起来;把属性隐藏,提供公共方法对其访问
2.继承:提高代码复用性;继承是多态的前提
注:
①子类中所有的构造函数都会默认访问父类中的空参数的构造函数,默认第一行有super();若无空参数构造函数,子类中需指定;另外,子类构造函数中可自己用this指定自身的其他构造函数。
3.多态
是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象
好处:提高了程序的扩展性
弊端:当父类引用指向子类对象时,虽提高了扩展性,但只能访问父类中具备的方法,不可访问子类中的方法;即访问的局限性。
前提:实现或继承关系;覆写父类方法。
作者: 神之梦 时间: 2013-7-15 20:06
2,列举五个RuntimeException?
作者: hx32 时间: 2013-7-15 20:11
空指针引用异常、类型强制转换异常、下标越界异常、算术运算异常(如整数除以0)、试图将对象强迫转换为不是实例的子类(ClassCastException)
作者: 以防万一 时间: 2013-7-15 20:11
本帖最后由 杨璐敏 于 2013-7-15 20:21 编辑
NullPointerException,UnknownTypeException,ClassCastException,SystemException, IllegalArgumentException
作者: 神之梦 时间: 2013-7-15 20:12
3,示例代码,如何启动一个线程。两种方法一种即可,并简述这两种方法?
作者: hx32 时间: 2013-7-15 20:12
第三题呢?
作者: 神之梦 时间: 2013-7-15 20:15
4,写出5个你用过的IO流?
作者: hx32 时间: 2013-7-15 20:15
1扩展java.lang.Thread类;2实现java.lang.Runnable接口
1中实现- Thread thread =new MyThreadClass();
- thread.start();
复制代码
作者: 以防万一 时间: 2013-7-15 20:15
创建方式一:继承Thread
1:定义一个类继承Thread
2:覆盖Thread中的run方法(将线程运行的代码放入run方法中)。
3:直接创建Thread的子类对象
4:调用start方法(内部调用了线程的任务(run方法));作用:启动线程,调用run方法
方式二:实现Runnable
1,定义类实现Runnable接口。
2,覆盖接口中的run方法(用于封装线程要运行的代码)。
3,通过Thread类创建线程对象;
4,将实现了Runnable接口的子类对象作为实际参数传递给Thread类中的构造函数。
为什么要传递呢?因为要让线程对象明确要运行的run方法所属的对象。
5,调用Thread对象的start方法。开启线程,并运行Runnable接口子类中的run方法。
Ticket t = new Ticket();
区别:
继承方式:线程代码放在Thread子类的run方法中
实现方式:线程存放在接口的子类run方法中;避免了单继承的局限性,建议使用。
作者: hx32 时间: 2013-7-15 20:17
第四题阵亡……
作者: 神之梦 时间: 2013-7-15 20:20
本帖最后由 神之梦 于 2013-7-15 20:21 编辑
暂停十分钟
8点30重新开始,请准时刷新
作者: 肥猫 时间: 2013-7-15 20:21
哈哈哈哈哈,面向对象三大特征:封装,继承,多态.
作者: 闲人忙啊 时间: 2013-7-15 20:21
本帖最后由 闲人忙啊 于 2013-7-15 20:22 编辑
第一题:封装 继承 多态
作者: hx32 时间: 2013-7-15 20:21
4.转换流、print流、Object流、输入流、输出流
此题作弊了,版主可以不加分
作者: 闲人忙啊 时间: 2013-7-15 20:23
第二题:1,
Object x = new Integer(0);
System.out.println((String)x);
当试图将对象强制转换为不是实例的子类时,抛出该异常(ClassCastException)
2,
int a=5/0;
一个整数“除以零”时,抛出ArithmeticException异常。
3,
String s=null;
int size=s.size();
当应用程序试图在需要对象的地方使用 null 时,抛出NullPointerException异常
4,
"hello".indexOf(-1);
指示索引或者为负,或者超出字符串的大小,抛出StringIndexOutOfBoundsException异常
5,
String[] ss=new String[-1];
如果应用程序试图创建大小为负的数组,则抛出NegativeArraySizeException异常。
作者: 肥猫 时间: 2013-7-15 20:23
ClassCastException、 IllegalStateException、 IndexOutOfBoundsException、NullPointerException、ArithmeticException。
作者: zhongruiyisheng 时间: 2013-7-15 20:23
面向对象三大特征:封装,继承,多态.
作者: 云游天下 时间: 2013-7-15 20:24
. java.lang.nullpointerexception ,异常的解释是"程序遇上了空指针",
2. java.lang.classnotfoundexception 异常的解释是"指定的类不存在",
3. java.lang.arithmeticexception 这个异常的解释是"数学运算异常",
4. java.lang.arrayindexoutofboundsexception 异常的解释是"数组下标越界",
5. java.lang.illegalargumentexception 这个异常的解释是"方法的参数错误",
作者: zhongruiyisheng 时间: 2013-7-15 20:24
NullPointerException,UnknownTypeException,ClassCastException,SystemException, IllegalArgumentException
作者: 闲人忙啊 时间: 2013-7-15 20:26
第3题- public class DoSomething implements Runnable {
- private String name;
-
- public DoSomething(String name) {
- this.name = name;
- }
-
- public void run() {
- for (int i = 0; i < 5; i++) {
- for (long k = 0; k < 100000000; k++) ;
- System.out.println(name + ": " + i);
- }
- }
- }
-
- public class TestRunnable {
- public static void main(String[] args) {
- DoSomething ds1 = new DoSomething("阿三");
-
- Thread t1 = new Thread(ds1);
- t1.start();
- }
- }
复制代码
作者: 云游天下 时间: 2013-7-15 20:28
字符流:Reader和 Writer
字节流:InputStream ,OutputStream
flush():刷新流
close():关闭资源
作者: 云游天下 时间: 2013-7-15 20:30
第一题 面向对象的三大特征:封装,继承、多态
作者: 神之梦 时间: 2013-7-15 20:30
5,final修饰的类、方法、变量的特点?提示:变量分为基本数据类型的变量和引用型变量。
作者: 以防万一 时间: 2013-7-15 20:31
...........
作者: 以防万一 时间: 2013-7-15 20:31
final特点:
1、可以修饰类,方法,变量
2、被修饰的类不可被继承
3、被修饰的方法不可被覆盖
4、被修饰的变量:
基本数据类型值不可被改变
引用型变量不能被赋值,但是指向的对象可被改变。
作者: 闲人忙啊 时间: 2013-7-15 20:32
本帖最后由 闲人忙啊 于 2013-7-15 20:40 编辑
第5题:
final修饰的类不可以被继承。
final修饰的方法不可以被覆盖。
final修饰的变量是一个常量。只能被赋值一次。
作者: 神之梦 时间: 2013-7-15 20:33
我发下题之后,之前发的题大家就不要答了,要赶在我发题之前写出答案!
作者: 王楚鑫 时间: 2013-7-15 20:34
final修饰的类:此类无法再衍生其他的子类
final修饰的方法:子类继承时不得覆盖此成员方法
final修饰的变量:此成员变量的值在初始化之后不可改变,也就是“常数”
作者: 神之梦 时间: 2013-7-15 20:35
第6题:重载和重写的区别?
作者: hx32 时间: 2013-7-15 20:35
5、用final修饰的类不能被继承;修饰的方法不能重写;修饰基本数据类型变量是常量,引用型变量是指向不变,但是指向内的内容可以更改
作者: 闲人忙啊 时间: 2013-7-15 20:36
本帖最后由 闲人忙啊 于 2013-7-15 20:41 编辑
第6题:
重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同
作者: 以防万一 时间: 2013-7-15 20:36
覆盖==重写 叫法不同罢了
父类中有个print()方法,子类里面再一个print()方法,这
样子类对父类方法的重写。
重载是指在“一个类”中,你写了多个方法,他们的方法名
相同,但是参数不同,这样算是重载。比如你在一个类中写
了print()和print(String a)两个同名函数。
重载的要素是 方法原型相同 参数的个数,类型,顺序不同
与返回值无关
作者: 云游天下 时间: 2013-7-15 20:37
1、通过实现Runnable接口线程创建
2、通过继承Thread类创建线程
两种方法的比较:
直接继承Thread类,这种方法的特点是: 编写简单,可以直接操纵线程;但缺点也是很明显的,因为若继承Thread类,就不能再从其他类来继承了。
使用Runnable接口,这种方法的特点是: 可以将Thread类与所要处理的任务的类分开,形成清晰地模型;还可以从其他类继承。
另外,若直接继承Thread类,在类中this即指当前线程;
若使用Runnable接口,要在类中获得当前线程,必须使用Thread.currentThread()方法。
通过继承Thread类创建线程的简单代码
public class testThread {
public static void main(String[] args) {
Thread t = new MyThread();
t.start();
}
}
class MyThread extends Thread{
public void run(){
for(int i=0;i<100;i++){
System.out.println(" "+ i);
}
}
作者: 在乎.. 时间: 2013-7-15 20:37
封装,继承,多态三个特征
作者: 闲人忙啊 时间: 2013-7-15 20:38
本帖最后由 闲人忙啊 于 2013-7-15 20:45 编辑
前面白答了{:soso_e105:}
作者: 肥猫 时间: 2013-7-15 20:38
(1)继承Thread类;(2)实现Runnable接口。
这两种方式无论哪种都要重写run()。另外,若是要继承Thread类,则要先明确该类是否已有明确的父类。由于JAVA不支持多继承,若是有,则不能继承Thread类;若是没有,在选择使用两种中哪一中时要考虑是否有操作到到实例属性,有才选继承Thread类。而继承Thread类后开启多线程后,各个线程是无法共享实例的属性的而实现Runnable接口由于是将实现Runnable接口的类的子类实例当成实参传递给Thread类的构造方法。所以运行的是该子类实例重写的RUN(),所以属性能被各个线程所共享。
以下是继承Thread类的示例:- public class ThreadDemo{
- public static void main(String[] args) {
- Demo d1 = new Demo("one");//创建了一个Thread类的子类对象
- Demo d2 = new Demo("two");
- d1.start();
- d2.start();
- for(int x=0; x<20; x++){
- System.out.println("main----"+x);
- }
- }
- }
- class Demo extends Thread{
- private String name;
- Demo(String name){
- this.name = name;
- }
- public void run(){
- System.out.println("name="+"-------------"+name);
- }
- }
复制代码
作者: hx32 时间: 2013-7-15 20:39
6、
重载的条件:
1.必须在同一个类中
2.方法名必须相同
3.参数列表不能相同。
重写的条件:
1. 在不同的类中
2. 发生方法重写的两个方法返回值,方法名,参数列表必须完全一致
3. 子类抛出的异常不能超过父类相应的方法抛出的异常
4.子类方法的访问级别不能低于父类相应方法的访问级别(public,package,protected,private)
5.方法体不同
作者: 神之梦 时间: 2013-7-15 20:40
第7题:示例代码:单例设计模式,两种方法一种即可,并说说这两种方法的区别?
作者: 肥猫 时间: 2013-7-15 20:41
final修饰的类不可被继承;修饰方法则不可被重写;修饰基本数据类型变量则该变量不可在被赋值,修饰引用类型变量例如修饰一个数组,其数组的值是可以被修改的,由于引用变量引用的是数组的地址值,所以只要地址值不改变则不会报错。
作者: 闲人忙啊 时间: 2013-7-15 20:42
本帖最后由 闲人忙啊 于 2013-7-15 20:46 编辑
7题
- <P>class Single{
- private Single(){
- }
- static Single s = new Single();
- public static Single getInstance(){
- return s;
- }
- }</P>
- <P> </P>
- <P>懒汉式后建对象,饿汗式先建对象</P>
复制代码
作者: 云游天下 时间: 2013-7-15 20:43
用final修饰变量是常量,修饰的类不能被继承,修饰的方法不能重写
方法内部类对象不能使用该内部类所在方法的非final局部变量。
作者: 在乎.. 时间: 2013-7-15 20:43
1.int a=1/0;
除以零”时,抛出ArithmeticException异常。
2.int a[]={1,2};
System.out.println(a[2]);
空指针异常。NullPointerException
3.String a="aa";
System.out.println(a.charAt(3));
超出字符串的大小,抛出StringIndexOutOfBoundsException异常
4.Object x = new Integer(0);
System.out.println((String)x);
当试图将对象强制转换为不是实例的子类时,抛出该异常(ClassCastException)
5.int a[]=new int[-1];
创建大小为负的数组,则抛出NegativeArraySizeException异常。
作者: 王楚鑫 时间: 2013-7-15 20:44
懒汉式
class Single {
private Single(){}
private static Single s;
public static Single getInstance(){
if(s==null){
s = new Single();
}
return s;
}
}
还有一种饿汉式、不同在于饿汉式在创建对象时候会直接static Single s = new Single();
作者: straw 时间: 2013-7-15 20:45
第五题:
final可修饰类,是类不能继承,final不能修饰接口,因为接口要被实现的否则就没有意义.
final可以修饰方法,是方法不能被复写,但可以重载.
final也可以修饰变量,是变量只能被赋一次值,这时变量也就变成了常量.虽然变不能再变,但值可以是变量,所以值本身还是可以变的
作者: 神之梦 时间: 2013-7-15 20:45
第8题:下面代码片段创建()个对象。
int a = 10;
String b = "abc";
String c = new String("abc");
MyTest test = new MyTest();
作者: 云游天下 时间: 2013-7-15 20:45
class Single {
//饿汉式
//第一步:将构造函数私有 不让其他类创建本类对象
private Single(){}
//第二步:自己创建一个本类对象
private static Single s = new Single();
//第三步:对外提供公共的访问方式
public static Single getInstance(){
return s;
}
//懒汉式
//第一步:将构造函数私有 不让其他类创建本类对象
private Single(){}
//第二步:自己创建一个本类对象
private static Single s = null;
//第三步:对外提供公共的访问方式
public static Single getInstance(){
if (s == null) {
s = new Single();
}
return s;
作者: 肥猫 时间: 2013-7-15 20:47
首先,重载一般是发生在一个类中定义多个重名方法,而这些方法参数列表中个数不同或类型不同。
重写又叫覆盖,一般发生于子父类之间,子类对父类方法进行重写,子类重写的方法其返回必须小于或等于父类的。
区别:两者的区别除了一个发生在类中,一个发生在两个类之间外还有几点,比如方法重载可提供类似多态性的好处,但又和多态的机制有些区别,重载方法是可改变返回值类型的,另,重载和重写不同,并非是面向对象所特有的。
作者: 在乎.. 时间: 2013-7-15 20:48
new Thread(new Runnble{
public void run(){
for(int i=1;i<5;i++){
System.out.println(i);
}
}
};
).statrt //这个是实现匿名内部类,是继承Runnable 接口的。
2.是继承Thread 类,复写run()方法;
作者: straw 时间: 2013-7-15 20:49
第五题:
final可修饰类,是类不能继承,final不能修饰接口,因为接口要被实现的否则就没有意义.
final可以修饰方法,是方法不能被复写,但可以重载.
final也可以修饰变量,是变量只能被赋一次值,这时变量也就变成了常量.虽然变不能再变,但值可以是变量,所以值本身还是可以变的
作者: 在乎.. 时间: 2013-7-15 20:49
InputStream, FileInputStream ,OutputStream, FileOutputStream ,BufferedInputStram
作者: 闲人忙啊 时间: 2013-7-15 20:49
8题
4个
作者: 云游天下 时间: 2013-7-15 20:50
第八题 3个对象
作者: 神之梦 时间: 2013-7-15 20:50
阅读代码片段,下面()代码导致程序出错。
int count; //第1行
int x[] =new int[10]; //第2行
for(int i=0;i<5){ //第3行
count++; //第4行
i++; //第5行
} //第6行
System.out.println(x[5]); //第7行
作者: straw 时间: 2013-7-15 20:51
第八题:
4个
作者: 闲人忙啊 时间: 2013-7-15 20:53
额..
第3行
作者: straw 时间: 2013-7-15 20:53
第三题:
new Thread(
new Runnable(){
public void run(){
System.out.println("线程执行代码块");//线程执行代码块
}
}
).start();
作者: 闲人忙啊 时间: 2013-7-15 20:54
第三行啊
作者: 云游天下 时间: 2013-7-15 20:54
第九题 第3行错误for循环用错了
作者: 在乎.. 时间: 2013-7-15 20:55
类 :没有子类,不能继承
方法:如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
变量:基本数据类型 一旦给final变量初值后,值就不能再改变了。
引用型变量 不能给赋第二个值;
作者: 神之梦 时间: 2013-7-15 20:56
第10题:以下循环体的执行次数是()
int i, j;
for(i=0,j=1;k<=j+1;j--){
i=i+2;
}
作者: 肥猫 时间: 2013-7-15 20:56
本帖最后由 肥猫 于 2013-7-15 20:58 编辑
一种懒汉式,一种饿汉式,我来个懒汉.
- <P>package cn.lj.singleton;
- //JAVA单例模式之懒汉式
- public class Singleton2 {
- //声明该类的一个实例,但并不立刻初始化
- private static Singleton2 s;
- //构造方法私有化
- private Singleton2(){}
- //提供对外部访问该类实例的方法</P>
- <P>public static Singleton2 getInstance(){
- if(s==null){
- synchronized(Singleton2.class){//由于考虑多线程情况这里采用双重判定,若有线程访问则对字节码文件上互斥锁
- if(s==null){
- s = new Singleton2();
- }
- }
- }
- return s;</P>
- <P> } </P>
- <P>}
- </P>
复制代码饿汉式
对象预先加载,线程是安全的,在类创建好的同时对象生成,调用获得对象实例的方法反应速度快,代码简练。
懒汉式:
对象延迟加载,效率高,只有在使用的时候才实例化对象,但若设计不当线程会不安全,代码相对于饿汉式复杂,第一次加载类对象的时候反应不快。
其实上面代码还不够完善,若是遇见反序列化机制强大的创建对象能力,此单例模式原则还是会被破坏,需要在上面代码在加个readResolve()才可防止其创建对象.
作者: 王丽达 时间: 2013-7-15 20:57
6.
重载:在同一个类中的几个同名函数,参数个数和类型不同。
重写:子类继承父类,子父类方法一模一样,子类方法覆盖父类的方法。
作者: straw 时间: 2013-7-15 20:57
第四题:
1,InputStream
2,OutputStream
3,BufferedReader
4,BufferedWriter
5,FileInputStream
作者: 在乎.. 时间: 2013-7-15 20:58
重载是一个类中可以定义几个同名的方法,参数类型不同。
重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
作者: 闲人忙啊 时间: 2013-7-15 20:59
0次吧,k没有定义,不能运行啊
作者: 云游天下 时间: 2013-7-15 20:59
本帖最后由 云游天下 于 2013-7-15 21:01 编辑
第十题 k没有定义是个错题 版主不要着急哦 呵呵 要说答案的话 0次呗
作者: straw 时间: 2013-7-15 21:00
第九题:
第三行for(int i=0;i<5)错误导致程序编译失败. 应该成for(int i=0;i<5;i++)
作者: 肥猫 时间: 2013-7-15 21:00
第八题4个,B1个,C2个,TEST一个,A不算,仍进方法区中的常量池里了
作者: 在乎.. 时间: 2013-7-15 21:00
第3行,i<5后面少写了;
第4行,count没有初始化
作者: 在乎.. 时间: 2013-7-15 21:03
不会,j都没有初始化吧,答案是多少?
作者: straw 时间: 2013-7-15 21:03
第十题:
k变量没有定义,编译错误!for循环不能执行
作者: 肥猫 时间: 2013-7-15 21:04
第1行错,声明局部变量没赋值;
第三行<5后面要加分号;
作者: 王楚鑫 时间: 2013-7-15 21:04
第10题k没有定义、执行不了
作者: straw 时间: 2013-7-15 21:05
第七题:
单例设计模式
懒汉试:
class A{
private static final A a=null;
//将构造方法私有化
private A(){}
public static A getInstands(){
if(a==null){
a=new A();
}
return a;
}
}
作者: 肥猫 时间: 2013-7-15 21:05
0次,哪里来的K,都没声明过.
作者: 闲人忙啊 时间: 2013-7-15 21:11
如果k要是i 的话,那就是一次
作者: 王丽达 时间: 2013-7-15 21:15
8.
3个对象
作者: 王丽达 时间: 2013-7-15 21:16
1.封装 继承 多态
作者: 云游天下 时间: 2013-7-15 21:23
24# 27# 28# 39# 48# 53# 60# 66# 74#
是我回答的的 谢谢斑竹,记得加分哦 我去研究代码题了
作者: 杨清杰 时间: 2013-7-15 21:36
才学习了2天,什么都看不懂,呜呜哀哉{:soso_e115:}
作者: 云游天下 时间: 2013-7-15 22:00
本帖最后由 云游天下 于 2013-7-15 22:37 编辑
//这个不是最终版的 最后结果在下边
package com.ma.test;
import java.util.Scanner;
public class Person {
int n = 0;
public int input() {
System.out.println("请输入:石头,剪刀,布");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
if (s.equals("石头")) {
n = 1;
} else if (s.equals("剪刀")) {
n = 2;
} else if (s.equals("布")) {
n = 3;
} else if (s.equals("exit")) {
System.out.print("系统退出了");
System.exit(0);
}
return n;
}
public static void main(String[] args) {
while(true){
Person p = new Person();
Computer c = new Computer();
Game g = new Game();
int num=p.input();
int num1=c.random();
g.result(num,num1);
}
}
}
class Computer {
public int random() {
int h = (int) (Math.random() * 3 + 1);
return h;
}
}
class Game {
public void result(int n, int m) {
if (n == m) {
System.out.println("平了");
} else {
if (m == 1) {
if (n == 2) {
System.out.println("你赢了");
} else if (n == 3) {
System.out.println("你赢了");
}else if (n == 0) {
System.out.println("你输了");
}
} else if (m == 2) {
if (n == 1) {
System.out.println("你输了");
} else if (n == 3) {
System.out.println("你输了");
}else if (n == 0) {
System.out.println("你输了");
}
} else if (m == 3) {
System.out.println("你输了");
}
}
}
}
作者: 闲人忙啊 时间: 2013-7-15 22:00
本帖最后由 闲人忙啊 于 2013-7-15 22:30 编辑
- package project.select;
- import java.util.Arrays;
- import javax.swing.JOptionPane;
- import javax.swing.JScrollPane;
- import javax.swing.JTextArea;
- public class SelectLeader {
- public static void main(String[] args) {
- final String ino="1号:修罗;2号:地狱犬;3号:啸月天狼;4号:神秘人\n";
- final String rule="出拳规则:1.石头;2.剪刀;3.布 \n" +
- "请出拳";
- String[] candidate={"修罗","地狱犬","啸月天狼","神秘人"};
- //第一步:输入
- int[] students=new int[40];
- String input="";
- int sno=0;
- String prompt="";
- int count = 0;
- for(int i=0;i<3;i++){
- prompt="----------------欢迎进入游戏世界---------------\n";
- input=JOptionPane.showInputDialog(prompt+ino+rule);
- if(input!=null){//表明点击了取消键,表示放弃,此时数组元素值是0
- /* while循环处理用户输入的非有效数组的情况
- * (1)给出提示信息
- * (2)让用户重新输入*/
- while(!input.equals("1")&
- !input.equals("2")&
- !input.equals("3")){
- //给用户提示信息
- JOptionPane.showMessageDialog(null, "请输入有效数字!");
- //让用户重新输入
- input=JOptionPane.showInputDialog(prompt+ino+rule);
- //如果用户重新输入时,选择放弃,则通过break语句跳出while循环
- if(input==null){
- break;
- }
- }
- //由于while循环中,有break语句,所以此处要有条件判断
- if(input!=null){
- sno=Integer.parseInt(input);
- students=sno;
- }
- }
- }
- int n=random();
- int n1=Integer.parseInt(input);
- count=result11(n,n1,count);
- String result="游戏结果";
- result+="分为:"+count+"\n";
- if(count>=2){
- result+="您赢了";
- }else{
- result+= "您输了";
- }
- JTextArea jta=new JTextArea(20,30);//文本区对象
- jta.setText(result);//文本区对象的显示内容
- JScrollPane jsclp=new JScrollPane(jta);//给文本区添加滚动条
- JOptionPane.showMessageDialog(null, jsclp);
- System.out.println(count);
- }
- public static int result11(int n,int m,int count){
- if(n == m){
- System.out.println("平了");
- }else{
- if(m==1){
- if(n==2){
- JOptionPane.showMessageDialog(null,"你输了");
- }else if(n ==3){
- JOptionPane.showMessageDialog(null,"你赢了");
- count++;
- }
- }else if(m == 2) {
- if(n == 1){
- JOptionPane.showMessageDialog(null,"你赢了");
- count++;
- }else if(n ==3){
- JOptionPane.showMessageDialog(null,"你输了");
- }
- }else if( m ==3 ){
- if(n==1){
- JOptionPane.showMessageDialog(null,"你输了");
- }else if(n == 2){
- JOptionPane.showMessageDialog(null,"你赢了");
- count++;
- }
- }
- }
- return count;
- }
- public static int random() {
- int h = (int)(Math.random()*3+1);
- return h;
- }
- }
复制代码
作者: 闲人忙啊 时间: 2013-7-15 22:09
本帖最后由 闲人忙啊 于 2013-7-15 22:32 编辑
程序没有写完,很简陋
-
01.PNG
(26.39 KB, 下载次数: 0)
开始图片
-
02.PNG
(32.17 KB, 下载次数: 0)
猜拳中
-
03.PNG
(21.15 KB, 下载次数: 0)
猜拳完一局后
-
04.PNG
(26.7 KB, 下载次数: 0)
游戏结果
作者: straw 时间: 2013-7-15 22:27
[attach]23126[/attach]
-
6$J[TD3A[5NT8YX$THNIR4U.jpg
(37.35 KB, 下载次数: 0)
作者: 云游天下 时间: 2013-7-15 22:30
本帖最后由 云游天下 于 2013-7-15 22:36 编辑
最终版在下边 这个删了
作者: 云游天下 时间: 2013-7-15 22:33
我的图片
-
1.JPG
(32.23 KB, 下载次数: 0)
结果
-
2.JPG
(32.39 KB, 下载次数: 0)
结果
作者: 云游天下 时间: 2013-7-15 22:35
package com.ma.test;
import java.util.Scanner;
public class Person {
int n = 0;
public int input() {
System.out.println("-------欢迎进入游戏世界--------");
System.out.println("*******************************");
System.out.println(" **猜拳开始** ");
System.out.println("*******************************");
System.out.println("出拳规则:石头,剪刀,布");
System.out.println("你的对手为:1.修罗 2.地狱犬 3.啸月天狼 4.神秘人");
System.out.println("三局两胜");
System.out.println("*******************************");
Scanner sc = new Scanner(System.in);
String s = sc.next();
if (s.equals("石头")) {
n = 1;
} else if (s.equals("剪刀")) {
n = 2;
} else if (s.equals("布")) {
n = 3;
} else if (s.equals("exit")) {
System.out.print("系统退出了");
System.exit(0);
}
return n;
}
public static void main(String[] args) {
while(true){
Person p = new Person();
Computer c = new Computer();
Game g = new Game();
g.result(p.input(), c.random());
}
}
}
class Computer {
public int random() {
int h = (int) (Math.random() * 3 + 1);
return h;
}
}
class Game {
public void result(int n, int m) {
if (n == m) {
System.out.println("平了");
} else {
if (m == 1) {
if (n == 2) {
System.out.println("你输了");
} else if (n == 3) {
System.out.println("你赢了");
}
} else if (m == 2) {
if (n == 1) {
System.out.println("你赢了");
} else if (n == 3) {
System.out.println("你输了");
}
} else if (m == 3) {
if (n == 1) {
System.out.println("你输了");
} else if (n == 2) {
System.out.println("你赢了");
}
}
}
}
}
作者: 云游天下 时间: 2013-7-15 22:38
附加图片 有点迟了 不好意思 斑竹我这还算吧?
-
1.JPG
(32.23 KB, 下载次数: 0)
-
2.JPG
(32.39 KB, 下载次数: 0)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |