【问题标题】:Methods arrays in javajava中的方法数组
【发布时间】:2015-04-21 23:26:00
【问题描述】:

我正在为这个学期的 Java 期末考试练习,并且正在做一些书中的问题。

如果数组 list1 和 list2 完全相同,则使用以下标头编写一个返回 true 的方法:

公共静态布尔等于(int[] list1, int[] list2)

这是我的代码。它在返回语句旁边给了我“非法的声明开始”。我做错了什么?

public class StrictlyIdenticalArrays {

    public static void main(String[] args) {

        java.util.Scanner input = new java.util.Scanner(System.in);

        int[] list1 = new int[12];
        int[] list2 = new int[12];

        System.out.print("Enter list1: ");
        for (int i = 0; i < 12; i++)
            list1[i] = input.nextInt();

        System.out.print("Enter list2 ");
        for (int i = 0; i < 12; i++)
            list2[i] = input.nextInt();

        if (equals(list1, list2) == true)
            System.out.print("Two lists are strictly identical");
        else
            System.out.print("Two lists are not strictly identical");
    }

    public static boolean equals(int[] list1, int[] list2) {

        for (int i = 0; i < 12; i++) {
            if (list1[i] == list2[i])

        } return true;
    }
}

【问题讨论】:

  • 检查你的牙套......
  • if(list1[i] == list2[i]) 之后没有任何声明 -- 如果计算结果为 true,你想做什么?
  • 格式化您的代码 - 您的错误将变得清晰。此外,当您的数组与12 有不同数量的元素时会发生什么?此外,为什么将数组称为list?已经有一个List
  • 如果计算结果为真,则打印“两个列表严格相同”。在 Mohammed 的帮助下解决了这个问题,但现在我无法从最初的提示跳到第二个提示

标签: java


【解决方案1】:

为了正确实现

public static boolean equals(int[] list1, int[] list2)

您需要执行以下操作:

  • 首先检查数组是否相等lengths;如果不是return false
  • 接下来,循环遍历数组,使用i &lt; list1.lengthi &lt; list2.length 作为循环的终止表达式。
  • 在循环内,检查数组元素是否相等;如果不是return false
  • 最后,循环结束后,return true

【讨论】:

    【解决方案2】:

    你只需要使用这个:

        for (int i = 0; i < 12; i++) {
            if (list1[i] != list2[i])return false;
    
        } return true;
    

    在这里,当每个成员严格相同并返回 true 时,您将循环直到到达列表末尾,但如果只有一个成员没有找到相同的,则返回 false。调用时返回语句bock方法执行。

    【讨论】:

    • 并在循环中动态使用 list1.length (for).12 不是错误,但对于优秀的开发人员来说并不可爱
    • 这有帮助。没有编译错误,但是现在在第一个提示之后,我输入数字并按回车后,它不会中断进入第二个提示
    • @Peter 添加一个 System.out.Println();在 System.out.print("Enter List2 :"); 之前
    • @Peter 看看如何使用stackoverflow [stackoverflow.com/tour]
    • 我是不是做错了什么……对不起,如果我做错了。我想我会在输入负值时为输入添加一个异常以中断。 System.out.println() 没有成功。它没有通过初始输入。不过谢谢
    【解决方案3】:
    if (list1[i] == list2[i])
    

    不是结束语,

    应该在

    之后用括号括起来
    if (list1[i] == list2[i]) {}
    

    或分号

    if (list1[i] == list2[i]);
    

    但更重要的是,如果您没有根据该条件做出任何决定,为什么还要检查该条件

    【讨论】:

    • if 后面的分号是必须的,不是吗?否则它不是一个空语句。单独使用括号的版本是否编译?
    【解决方案4】:

    你的方法并没有真正按照你想要的方式工作。您必须对其进行一些更改以使其返回 true 或 false

    您的方法将如下所示:

    public static boolean equals(int[] list1, int[] list2) 
    {
        for (int i = 0; i < list1.length; i++) 
        {
            if (list1[i] != list2[i])
               return false;
        } 
    
        return true;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-07
      • 2016-06-07
      • 2015-09-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多