布尔方法不断返回真

请帮助我理解为什么我写的布尔方法没有正确返回。我要求用户输入一系列要存储在检查重复项的数组中的整数。


import java.util.Scanner;


public class PokerHands 

{

    public static void main(String args[])

    {

        System.out.println(containsPair(welcome()));

    } // end main


    private static int[] welcome()

    {

        Scanner read = new Scanner(System.in);

        int[] poker_array = new int[5];


        System.out.println("Enter five numeric cards, no face cards. Use 2-9: ");

        for (int i = 0; i < 5; i++) {

            System.out.printf("Card %d: ", i + 1);

            int nums = read.nextInt();

            while (nums < 2 || nums > 9) {

            System.out.println("Wrong input. Choose from 2-9 only: ");

            nums = read.nextInt();

            } // end while

        poker_array[i] = nums;

        }


        for (int i = 0; i < poker_array.length; i++) {

            System.out.print(poker_array[i] + ", ");

        }


        return poker_array;

    } // end welcome()


    private static boolean containsPair(int hand[])

    {

        for (int i = 0; i < hand.length; i++) {

            for (int j = 0; j < hand.length; j++) {

                if (hand[i] == hand[j]) {

                    return true;

                } // end if

            } // end inner for

        } // end outer for


        return false;

    } // end containsPair()

} //end class

输出:$ java PokerHands


输入五张数字卡片,没有人脸卡片。使用 2-9:


卡片 1:2


卡片 2:3


卡片 3:4


卡片 4:5


卡片 5:6


2, 3, 4, 5, 6, 真


$ java PokerHands 输入五张数字牌,无面牌。使用 2-9:


卡片 1:2


卡片 2:2


卡片 3:3


卡片 4:4


卡片 5:5


2, 2, 3, 4, 5, 真


$ java PokerHands


输入五张数字卡片,没有人脸卡片。使用 2-9:


卡片 1:2


卡片 2:2


卡片 3:2


卡片 4:2


卡片 5:2


2, 2, 2, 2, 2, 真


开心每一天1111
浏览 150回答 3
3回答

万千封印

这是因为对于 1st pass,i=0和j=0.&nbsp;所以它总是会返回true。你应该初始化j=i+1

MMMHUHU

尝试将布尔值中的 if 更改为以下内容:if&nbsp;(hand[i]&nbsp;==&nbsp;hand[j]&nbsp;&&&nbsp;i&nbsp;!=&nbsp;j)

白板的微信

使用 HashSet 更改方法。代码将是这样的private static boolean containsPair(int hand[]){&nbsp; &nbsp; //adding to list all elements&nbsp; &nbsp; List<Integer> intList = new ArrayList<>();&nbsp; &nbsp; for (int i : hand) {&nbsp; &nbsp; &nbsp; &nbsp; intList.add(i);&nbsp; &nbsp; }&nbsp; &nbsp; //put all elements to set&nbsp; &nbsp; HashSet<Integer> zipcodeSet = new HashSet<>(intList);&nbsp; &nbsp; //if size not match , has a dublicate&nbsp; &nbsp; return zipcodeSet.size() != hand.length;} // end containsPair()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java