为了账号安全,请及时绑定邮箱和手机立即绑定

布尔方法不断返回真

布尔方法不断返回真

开心每一天1111 2021-08-25 18:10:53
请帮助我理解为什么我写的布尔方法没有正确返回。我要求用户输入一系列要存储在检查重复项的数组中的整数。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:62, 3, 4, 5, 6, 真$ java PokerHands 输入五张数字牌,无面牌。使用 2-9:卡片 1:2卡片 2:2卡片 3:3卡片 4:4卡片 5:52, 2, 3, 4, 5, 真$ java PokerHands输入五张数字卡片,没有人脸卡片。使用 2-9:卡片 1:2卡片 2:2卡片 3:2卡片 4:2卡片 5:22, 2, 2, 2, 2, 真
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

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


查看完整回答
反对 回复 2021-08-25
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

尝试将布尔值中的 if 更改为以下内容:

if (hand[i] == hand[j] && i != j)


查看完整回答
反对 回复 2021-08-25
?
白板的微信

TA贡献1883条经验 获得超3个赞

使用 HashSet 更改方法。代码将是这样的


private static boolean containsPair(int hand[])

{

    //adding to list all elements

    List<Integer> intList = new ArrayList<>();

    for (int i : hand) {

        intList.add(i);

    }

    //put all elements to set

    HashSet<Integer> zipcodeSet = new HashSet<>(intList);

    //if size not match , has a dublicate

    return zipcodeSet.size() != hand.length;


} // end containsPair()


查看完整回答
反对 回复 2021-08-25
  • 3 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信