java-大神求解,输出平局的继续比较,知道得出输赢为止

问题描述

大神求解,输出平局的继续比较,知道得出输赢为止

package game;
import java.util.Scanner;
/*

  • 实现功能:玩家在自己选择出石头,剪刀或布,电脑随机给出一个选择并输出提示,然后比较输赢3
    */
    public class shitoujiandaobu {
    public static void main(String[] args) {
    shitoujiandaobu hello=new shitoujiandaobu();
    Scanner input =new Scanner(System.in);
    System.out.println("请玩家输入:0,1或2;0=剪刀,1=石头,2=布");
    int player =input.nextInt();
    int computer;
    if(player==0){
    System.out.println("您选择的是剪刀");
    }
    else if(player==1){
    System.out.println("您选择的是石头");
    }
    else if(player==2){
    System.out.println("您选择的是布");
    }
    else{
    System.out.println("输入有误,请您重入0,1或2;0=剪刀,1=石头,2=布;");
    }
    computer=(int)(Math.random()*3);
    if(player==0){
    System.out.println("电脑选择的是剪刀");
    }
    else if(computer==1){
    System.out.println("电脑选择的是石头");
    }
    else if(computer==2){
    System.out.println("电脑选择的是布");
    }
    hello.compare(player, computer);

    }
    public void compare(int a,int b)
    {

    if(a==b)
    {
    System.out.println("我们平了");
    }
    else if(a==0&&b==2||a==1&&b==0||a==2&b==1){
    System.out.println("你赢了");
    }
    else{
    System.out.println("你输了");
    }
    }
    }

解决方案

手头没有eclipse做测试,我就说说发现的问题,首先没有重复的输入,假如输入的数字不是0~2之间的一个那么你的程序只是提示请重新输入,
没有一个循环控制到再次输入. 其次就是判断的部分,如果这是你直接粘过来的,那么按照比较顺序从前往后的优先级, 而且最后 a == 2 & b == 1 可能是 打错
了把,这里变成 与 运算了. 建议把 每一对 条件用括号括起来 判断. 其次判断出平局依旧没有返回到重新输入的代码.

大体上可以while循环控制,如果输入不合法, 或者比较平局 就再次进入本循环重新输入, 出现结果了就break跳出.

解决方案二:

我只是将程序改成了lz题目所说的样子,至于其中逻辑上的问题lz自己再检查一下

 import java.util.Scanner;

public class Test{

    public static boolean flag;

    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        while(true){
            System.out.println("请玩家输入:0,1或2;0=剪刀,1=石头,2=布");
            int player =input.nextInt();
            int computer;
            if(player==0){
                System.out.println("您选择的是剪刀");
            }
            else if(player==1){
                System.out.println("您选择的是石头");
            }
            else if(player==2){
                System.out.println("您选择的是布");
            }
            else{
                System.out.println("输入有误,请您重入0,1或2;0=剪刀,1=石头,2=布;");
            }
            computer=(int)(Math.random()*3);
            if(player==0){
                System.out.println("电脑选择的是剪刀");
            }
            else if(computer==1){
                System.out.println("电脑选择的是石头");
            }
            else if(computer==2){
                System.out.println("电脑选择的是布");
            }
            flag = compare(player, computer);
            if(!flag) break;
        }
    }
    public static boolean compare(int a,int b)
    {
        if(a==b)
        {
            System.out.println("我们平了");
            return true;
        }
        else if(a==0&&b==2||a==1&&b==0||a==2&&b==1){
            System.out.println("你赢了");
            return false;
        }
        else{
            System.out.println("你输了");
            return false;
        }
    }
}
时间: 2024-07-29 04:43:55

java-大神求解,输出平局的继续比较,知道得出输赢为止的相关文章

用java写了一个键盘监听,实现一张图片的上下左右移动,为什么图片会出现一闪一闪的,大神求解

问题描述 用java写了一个键盘监听,实现一张图片的上下左右移动,为什么图片会出现一闪一闪的,大神求解 package Fly; import java.awt.Graphics; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.image.BufferedImage; import java.io.File;

c语言-急!各路大神求解C语言

问题描述 急!各路大神求解C语言 形如:1/a 的分数称为单位分数. 可以把1分解为若干个互不相同的单位分数之和. 例如: 1 = 1/2 + 1/3 + 1/9 + 1/18 1 = 1/2 + 1/3 + 1/10 + 1/15 1 = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/15 + 1/35 + 1/45 + 1/231 等等,类似这样的分解无穷无尽. 我们增加一个约束条件:最大的分母必须不超过30 请你求出分解为n项时的所有不同分解法. 数据格式要求: 输入一

多线程-发现了一个奇怪的问题,大神求解?

问题描述 发现了一个奇怪的问题,大神求解? 是这样的,今天看看了看Java并发包的CountDownLatch类,线程递减锁,然后直接模拟了一下这个类,贴代码 任务类 public class Task implements Runnable{ public String name; public CountDown countDown; public Task(String name,CountDown countDown) { this.name = name; this.countDown

c语言-急!各路大神求解C语言,不要用C++

问题描述 急!各路大神求解C语言,不要用C++ 标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求. 如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式. 请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式). 解决方案 参考:http://zhidao.baidu.com/link?

string-菜鸟刚学,大神求解。。。。

问题描述 菜鸟刚学,大神求解.... package cn.study.wrapperClass; import java.util.Arrays; public class TestWrapper { public static void main(String[] args) { String a = "34 9 -7 67 25"; String [] b = a.split(" "); Arrays.sort(b); System.out.println(A

控件-大神求解! 表情显示怎么实现啊!

问题描述 大神求解! 表情显示怎么实现啊! 大神求解! 表情显示怎么实现啊!需要什么控件???求方法!谢谢了 解决方案 什么语言也没说.如果是C# VB,用richtextbox,如果是web,用各种编辑器,比如fkcedit等. 解决方案二: 类似http://blog.csdn.net/xianfajushi/article/details/4763800 解决方案三: http://blog.csdn.net/baidu_33396702/article/details/50349861

ios-求大神为什么输出会出现负数 不加锁为什么会出现这种情况 睡眠时间对结果有什么影响

问题描述 求大神为什么输出会出现负数 不加锁为什么会出现这种情况 睡眠时间对结果有什么影响 求大神为什么输出会出现负数 不加锁为什么会出现这种情况 睡眠时间对结果有什么影响 解决方案 你不加锁可能多个线程对它减一 就会出现负数 解决方案二: 休眠sleep 2.0s期间 并行线程对number 继续进行减操作延迟2s后才会走出if 判断这时候 已经减了很多次. 解决方案三: 不枷锁的情况下 , 你又把线程写在for循环中, 各个线程都相互独立,在后面程序还没执行 -- 的操作的时候, 前面sle

聊天室-关于java的聊天程序,分服务端和客户端,请java大神帮我调试一下,我检查没编写错误

问题描述 关于java的聊天程序,分服务端和客户端,请java大神帮我调试一下,我检查没编写错误 //服务端 package chatApp; import java.net.*; import java.io.*; import java.util.*; public class chatserverthree implements Runnable { public static final int PORT=1234; protected ServerSocket listen; stat

计算机学习-python大神求解,百度不到,我是帮人问得,

问题描述 python大神求解,百度不到,我是帮人问得, 计算机学习-python大神求解,百度不到,我是帮人问得,-"> 解决方案 你这直接是作业啊 还是要别人自己动手吧

求java大神解答一下这个问题!

问题描述 求java大神解答一下这个问题! 在java中setExtendedState( );//这一句是干什么用的?能否详细解释一下setExtendedState(MAXIMIZED_HORIZ); //这一句是什么意思,可以干什么? 解决方案 求大神帮解答javaEE这个问题,谢谢了 解决方案二: 设置窗口的状态参数含义NORMAL 默认状态ICONIFIED 最小化MAXIMIZED_HORIZ 水平方向最大化MAXIMIZED_VERT 垂直方向最大化MAXIMIZED_BOTH 水