【问题标题】:Is it possible to hide an element in array when the array is printed to the console?将数组打印到控制台时是否可以隐藏数组中的元素?
【发布时间】:2021-10-28 10:20:57
【问题描述】:

我正在学习 Java 语言,现在我正在做一个小项目,叫做战舰游戏。

问题:我想用特定索引中的随机字符填充一个 char 数组,但是当整个数组在控制台中打印时,这些字符不应该对用户可见,因为基于这些字符,用户会点击这些字符.

【问题讨论】:

  • 如果您有特定的索引,那么您可以在打印之前检查它是否是其中之一?
  • 请先提供您的源代码。最好指出你的源代码哪里出了问题
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java arrays char


【解决方案1】:

一个快速而肮脏的解决方案是在打印时检查字符是否应该隐藏:

public static void main(String[] args)
{
    
    //your char array
    char[] charsArray = {'a', 'b', 'c', 'd', 'e'};
    //chars you want to hide
    char[] charsToHide = {'b', 'd'};
    
    //loop over you char array
    for (char myChar : charsArray)
    {
        
        //check if element is a char to hide
        if (containsChar(myChar, charsToHide) == false) 
        //if not, print it
        {System.out.print(myChar);}
        
    }
    
}

public static boolean containsChar(char myChar, char[] charsToHide)
{
    
    //loop over all chars to hide
    for (char charArrayElement : charsToHide)
    {
        
        //check if you char is part of chars to be hidden
        if (myChar == charArrayElement) {return true;} 
        
    }
    
    return false;
    
}

【讨论】:

    【解决方案2】:

    您可以创建另一个辅助数组来存储要从控制台隐藏的随机字符的索引。当您打印到控制台时,检查当前索引是否与您要从刚刚创建的用于存储索引的数组中隐藏的索引匹配。

    好的....假设您在新创建的索引持有者数组中有 w int 。你的主要 char[] 有 n 个元素。如果您使用蛮力,这将花费您 O(n * w) 的复杂性。大约 O(n^2) 复杂度。因此,更好的方法是您应该按升序填充辅助数组。然后执行二分查找。复杂度将是 O(n * lgW)。使用哈希图可以进行另一种优化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      相关资源
      最近更新 更多