Как остановить цикл в Java, если значение увеличивается последовательно три раза?

Я новичок в Java. Я пишу образец игры ножницы рок-бумаги. пользовательский ввод 0,1,2 для камня, бумаги, ножниц соответственно. программа случайным образом сгенерировала результат. мне почти удалось заставить его работать, но единственное, что я застрял в том, как STOP THE FOR LOOP IF ONE OF THE SIDE WINS CONSECUTIVELY FOR THREE TIMES,

ЭТО ОРИГИНАЛЬНЫЙ ВОПРОС

Напишите программу, которая играет в игру "ножницами". Правило состоит в том, что ножницы выигрывают у бумаги, камень - у ножниц, а бумага - у камня. Программа представляет ножницы как 0, камень как 1 и бумагу как 2. Игра должна вестись между компьютером и игроком. Программа предложит пользователю ввести количество раундов, чтобы выиграть. Например, если пользователь вводит 4, то победитель должен выиграть как минимум 3 из 4 раундов. Если одна из сторон выигрывает 3 раза подряд, игра заканчивается без четвертого раунда. Если пользователь участвует в 5 раундах, победитель должен выиграть как минимум 3 из 5 раундов. То же правило последовательных 3-х побед также применяется. После того, как пользователь ввел число раундов, компьютер случайным образом генерирует число от 0 до 2. Затем программа предлагает пользователю ввести число 0, 1 или 2. После последнего раунда (с учетом вышеупомянутых ранее победитель-правило), программа отображает сообщение, указывающее, выиграл ли компьютер или пользователь, проиграл или выиграл.

Это мой код.

package assignment1;

import java.util.Scanner;
import java.util.Random;

public class question1_9 {

// This program is used to play scissor-rock-paper game.

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        Random random = new Random();
        int scissor = 0, rock = 1, paper = 2, round, userinput,comprand, userresult = 0, compresult = 0, control,j,k;

        // Variables used in this program is declared and initialized.

        /* Number of rounds wished to be play are obtained from user. */

        System.out.println("WELCOME TO ROCK PAPER SCISSOR GAME. ");
        System.out.println("PLEASE ENTER THE NUMBER OF ROUND YOU WANT TO PLAY:  ");
        round = scan.nextInt();
        control = (round/2)+1;

        for(int i = 0; i<round; i++)
        {
            if (compresult == control | userresult == control)
            {
                break;
            }
            System.out.println("ROUND " + (i+1));
            System.out.println("PLEASE ENTER:\n 0 for scissor \n 1 for rock \n 2 for paper  \n");
            userinput = scan.nextInt();
            comprand = random.nextInt(3);
            if (userinput == 0)
            {
                if (comprand == 0)
                {
                    System.out.println("COMPUTER IS SCISSOR");
                    System.out.println("DRAW!!!");
                    i--;
                }
                else if (comprand == 1)
                {
                    System.out.println("COMPUTER IS ROCK");
                    System.out.println("COMPUTER WINS!!!");
                    compresult++;
                }
                else
                {
                    System.out.println("COMPUTER IS PAPER");
                    System.out.println("YOU WIN!!!");
                    userresult++;
                }
                }
            else if (userinput == 1)
            {
                if (comprand == 0)
                {
                    System.out.println("COMPUTER IS SCISSOR");
                    System.out.println("COMPUTER WINS!!!");
                    compresult++;
                }
                else if (comprand == 1)
                {
                    System.out.println("COMPUTER IS ROCK");
                    System.out.println("YOU WIN!!!");
                    userresult++;
                }
                else
                {
                    System.out.println("COMPUTER IS PAPER");
                    System.out.println("DRAW!!!");
                    i--;
                }
                }
            else
            {
                if (comprand == 0)
                {
                    System.out.println("COMPUTER IS SCISSOR");
                    System.out.println("YOU WIN!!!");
                    userresult++;
                }
                else if (comprand == 1)
                {
                    System.out.println("COMPUTER IS ROCK");
                    System.out.println("DRAW!!!");
                    i--;
                }
                else
                {
                    System.out.println("COMPUTER IS PAPER");
                    System.out.println("COMPUTER WINS!!!");
                    compresult++;
                }
                }
            }
        if(compresult == userresult)
            System.out.println("\n\nFINAL RESULT IS DRAW!!!");
        else if (compresult > userresult)
            System.out.println("\n\nFINAL RESULT IS COMPUTER WIN!!!");
        else
            System.out.println("\n\nFINAL RESULT IS YOU WIN!!!");

        }

    }

2 ответа

Использование break; заявление, когда вы хотите выйти из текущего цикла.

В верхней части цикла,

хранить победы в массиве

String[] results=new String[rounds];

сохранить результаты как "пользователь" или "комп" для каждого раунда и в конце цикла сделать это

if((results[i].equals("user") && results[i-1].equals("user") && results[i-2].equals("user") || (results[i].equals("comp") && results[i-1].equals("comp") && results[i-2].equals("comp")))
{
break;
}

Как сказал шрейас, используйте break заявление, когда вы хотите выйти из цикла.

Я бы поставил compresult обнулить всякий раз, когда игрок выигрывает раунд, и установить userresult в ноль всякий раз, когда компьютер побеждает. Затем в верхней части цикла, сразу после { добавлять:

if(userResult == 3 || computerResult == 3 || round/2 > 10)
{
    break;
}

Некоторый код взят из оригинального поста Шрея.

Другие вопросы по тегам