Java纸剪程序

Java纸剪程序,java,methods,parameters,arguments,Java,Methods,Parameters,Arguments,纸石剪刀java程序 好的,我现在唯一的问题是球员的分数直到第二圈才更新。有什么建议吗 再次感谢Radiodef对您的帮助 更新代码如下 import java.util.Scanner; public class RPS_Game { public static void main(String[] args) { char r = 'R'; char p = 'P'; char s = 'S'; char player1 = 0; char pl

纸石剪刀java程序

好的,我现在唯一的问题是球员的分数直到第二圈才更新。有什么建议吗

再次感谢Radiodef对您的帮助

更新代码如下

import java.util.Scanner;


public class RPS_Game {

public static void main(String[] args) {
    char r = 'R';
    char p = 'P';
    char s = 'S';
    char player1 = 0;
    char player2 = 0;
    int player1Score = 0;
    int player2Score = 0;
    int playCount = 0;


    Scanner scan = new Scanner(System.in);



    while(playCount < 3) {

        System.out.print("Please enter either (R)ock, (P)aper, or (S)iccors: ");
        player1 = scan.nextLine().toUpperCase().charAt(0);
        System.out.print("Please enter either (R)ock, (P)aper, or (S)iccors: ");
        player2 = scan.nextLine().toUpperCase().charAt(0);

        int winner = winningPlayer(player1, player2);   
        if(winner == 0) {
            System.out.print("\nIt's a tie.  Nobody wins!\n");
            System.out.println("\nPlayer 1: " + (player1Score += 0));
            System.out.println("\nPlayer 2: " + (player2Score += 0));
        }
        if(winner == 1) {
            System.out.print("\nPlayer 1 wins!!\n");
            System.out.println("\nPlayer 1: " + player1Score++);    
            System.out.println("\nPlayer 2: " + (player2Score += 0));
        }
        if(winner == 2) {
            System.out.print("\nPlayer 2 wins!!\n");
            System.out.println("\nPlayer 1: " + (player1Score += 0));
            System.out.println("\nPlayer 2: " + player2Score++);    
        }   
    playCount++;
    }       
}

public static int winningPlayer(int player1,  int player2) {    

    //Player 1 wins 
    int result = 0;
    if(player1 == 'R' && player2 == 'S') {      
        result = 1;
    }
    else if(player1 == 'P' && player2 == 'R') {
        result = 1;
    }   
    else if(player1 == 'S' && player2 == 'P') {
        result = 1;
    }   
    //Player 2 wins 
    else if(player2 == 'R' && player1 == 'S') {
        result = 2;
    }
    else if(player2 == 'P' && player1 == 'R') {
        result = 2;
    }   
    else if(player2 == 'S' && player1 == 'P') {
        result = 2;
    }
    return result;
}   
}
import java.util.Scanner;
公共类RPS_游戏{
公共静态void main(字符串[]args){
字符r='r';
charp='p';
char s='s';
字符播放器1=0;
字符播放器2=0;
int player1Score=0;
int player2Score=0;
int playCount=0;
扫描仪扫描=新扫描仪(System.in);
同时(播放次数<3){
系统输出打印(“请输入(R)ock、(P)aper或(S)iccors:”;
player1=scan.nextLine().toUpperCase().charAt(0);
系统输出打印(“请输入(R)ock、(P)aper或(S)iccors:”;
player2=scan.nextLine().toUpperCase().charAt(0);
int winner=获胜玩家(玩家1,玩家2);
如果(获胜者==0){
System.out.print(“\n平局,没人赢!\n”);
System.out.println(“\n第1层:”+(player1Score+=0));
System.out.println(“\n第2层:”+(player2Score+=0));
}
如果(获胜者==1){
System.out.print(“\n第1层获胜!!\n”);
System.out.println(“\n第1层:“+player1Score++”);
System.out.println(“\n第2层:”+(player2Score+=0));
}
如果(获胜者==2){
System.out.print(“\n第2层获胜!!\n”);
System.out.println(“\n第1层:”+(player1Score+=0));
System.out.println(“\n第2层:“+player2Score++”);
}   
playCount++;
}       
}
公共静态整型winningPlayer(整型玩家1,整型玩家2){
//玩家1获胜
int结果=0;
如果(player1=='R'&&player2=='S'){
结果=1;
}
else if(player1=='P'和&player2=='R'){
结果=1;
}   
else if(player1=='S'和&player2=='P'){
结果=1;
}   
//玩家2获胜
else if(player2=='R'和&player1=='S'){
结果=2;
}
else if(player2=='P'和&player1=='R'){
结果=2;
}   
else if(player2=='S'和&player1=='P'){
结果=2;
}
返回结果;
}   
}

首先,您似乎只需要将调用移动到循环中:

while(playCount < 3) {
    System.out.print("Please enter either (R)ock, (P)aper, or (S)iccors: ");
    player1 = scan.nextLine().toUpperCase().charAt(0);
    System.out.print("Please enter either (R)ock, (P)aper, or (S)iccors: ");
    player2 = scan.nextLine().toUpperCase().charAt(0);

    // recompute the winner each time
    int winner = winningPlayer(player1, player2);
    ...
}
或者你可以做一些更有趣的事情,比如使用数组:

int[] scores = new int[3];

while (...) {
    ...

    ++scores[ winner ];

    for (int i = 1; i < scores.length; ++i) {
        System.out.printf("Player %d score is %d.\n", i, scores[i]);
    }
}
int[]分数=新的int[3];
而(…){
...
++得分[获胜者];
对于(int i=1;i
你在做什么?你想要什么帮助?你下一步要做的是什么?发表你的具体问题。这个问题在CR上和现在一样不清楚。通过查看一次代码,看起来程序没有完成,没有完全按照计划工作,这不适合进行代码检查。此时不需要进行代码检查。对不起,我说的不具体。所以我真的不知道如何解决方法问题。我搞砸了,没有把我看不懂的部分贴出来。两秒钟后回到原来的帖子。实际上,我们并不太在乎它是否是家庭作业,我们只喜欢范围狭窄、前提明确的问题。(这促使我们给出简洁的答案。)好的,这很有帮助。两个问题,在winningPlayer方法中,对于每个条件,它都返回0、1或2,这取决于哪个玩家实际获胜。首先,我应该将它们保留为return1,return2…,还是将其设为result=1,result=2。。。在方法的末尾返回结果,我想应该是一样的,如果是的话,还有更多的首选方法吗?第二,当我将方法调用添加到while循环中时,是否实际收集了返回的内容,即获胜者?再次感谢!1.没关系。这真的是一种风格的选择。如果你是一个新的程序员,两种方法都可以尝试,但在同一个程序中要始终保持风格一致。2.是的,它将方法的结果值分配给一个新变量。每次循环重复产生新结果时,它都会再次被调用。你真是棒极了Radiodef!!我让它正常工作了。除了…唯一的事情是在第一圈,如果玩家1赢了,它实际上不会计算分数,直到第二圈。我要在原始帖子中更新我的代码。两秒钟…最简单的事情就是将
playerScore++
增量移动到单独的行(打印外语句)。您看到的是:后缀增量,如
i++
i
增加1,但其计算结果为增量之前的值。类似于
++i
的前缀增量则以另一种方式工作,其计算结果为增量后的值。看看这个程序:
i++
打印增量之前的值,
++i
打印增量之后的值。哦,好的,这很有意义。再次感谢,你帮了我大忙!!
int[] scores = new int[3];

while (...) {
    ...

    ++scores[ winner ];

    for (int i = 1; i < scores.length; ++i) {
        System.out.printf("Player %d score is %d.\n", i, scores[i]);
    }
}