【问题标题】:Problems with sorting an Array in JavaJava中数组排序的问题
【发布时间】:2019-04-26 13:19:07
【问题描述】:

我是一个该死的初学者,试图编写一个 lil 程序来检查 2 个单词是否是字谜。到目前为止,单词中的所有空格都被删除了,但显然我的 Arrays.sort() 有错误,但我看不到它。为什么以及在我的 Arrays.sort() 行中出现错误,我该如何解决?

编辑:如果我像这样离开 Arrays.sort() ,它会编译并工作,所以显然该行只有一个问题。如果我把它们留在它指向数组并说错误:找不到符号

public static void isAnagramm(String wordOne, String wordTwo)       
{

    String  w1= wordOne.replaceAll("\\s", ""); 
    int word1 = w1.length();
    String w2 = wordTwo.replaceAll("\\s", "");
    int word2 = w2.length();

    boolean anagrammStatus = false;



    if(word1 == word2)
    {
        anagrammStatus = true;
    }
    else
    {
        char [] charArrayWordOne = w1.toLowerCase().toCharArray(); 
        char [] charArrayWordTwo = w2.toLowerCase().toCharArray();  

        //Arrays.sort(charArrayWordOne); 
        //Arrays.sort(charArrayWordTwo);

        anagrammStatus = charArrayWordOne.equals(charArrayWordTwo);

    }

    if(anagrammStatus == false)
    {
        System.out.println("Anagram");
    }                   
    else;
    {
        System.out.println("No Anagram");
    }

}

【问题讨论】:

  • if (anagrammStatus = false) 应该有双等号吗?
  • 使用Arrays.equals()比较数组,否则你只是比较数组的引用而不是内容。
  • 您提供的代码将无法编译。这就是 it 不起作用的原因。还有其他原因可以解释为什么类似的程序编译不会产生你想要的结果,但不清楚你实际编写了哪个这样的程序。
  • if(word1 == word2) 也应该是 if(word1.equals(word2))
  • 使用 IDE。注意它告诉你的内容。

标签: java arrays sorting char


【解决方案1】:

这应该可以解决问题:

  public static void isAnagramm(String wordOne, String wordTwo)       
  {   
    String w1= wordOne.replaceAll("\\s", "");
    String w2 = wordTwo.replaceAll("\\s", "");

    // No need to keep the length variables

    boolean anagramStatus = false;

    // Check if the strings are equal to begin with, use equals and not  == operator
    if(w1.equals(w2)) 
    {
      anagramStatus = true;
    }
    else
    {
      char [] charArrayWordOne = w1.toLowerCase().toCharArray();
      char [] charArrayWordTwo = w2.toLowerCase().toCharArray();  

      Arrays.sort(charArrayWordOne);
      Arrays.sort(charArrayWordTwo);

      // Compare arrays using the Arrays.equals method to avoid comparing the object references
      anagramStatus = Arrays.equals(charArrayWordOne, charArrayWordTwo);
    }

    // Use simple boolean logic in your condition here, or again, always use == instead of =
    if (anagramStatus) 
    {
      System.out.println("Anagram");
    }                   
    else
    {
      System.out.println("No Anagram");
    }       
  }

【讨论】:

  • 谢谢,但即使我尝试编译它,现在不仅会显示 Arrays.sort() 的错误,还会显示 Arrays.equals() 的错误。在这两种情况下,它都说错误:找不到符号
  • 那是因为你需要导入 Arrays 类,在文件顶部添加以下行:import java.util.Arrays;
猜你喜欢
  • 1970-01-01
  • 2014-10-03
  • 2015-07-09
  • 1970-01-01
  • 2011-09-27
  • 2021-11-23
  • 2016-09-26
  • 2021-05-04
相关资源
最近更新 更多