【问题标题】:when the array x[] length is more than 1 the logic doesnt work, but the array y[] can be any length当数组 x[] 长度大于 1 时,逻辑不起作用,但数组 y[] 可以是任意长度
【发布时间】:2018-05-11 20:00:53
【问题描述】:

x[] 是第一学期,y[] 是第二学期。当只有一门课程在 x[] 中注册时,一切正常,但是当注册了 2 门课程时,if else 就搞砸了。 当x[]'长度大于一时,逻辑不起作用,但是这个数组y[]可以是任意长度,不影响逻辑。

public static void PreRequist(int x[],int y[]){
    for (int i=0;i<y.length;i++){
        if(y[i]==4){
            for(int j=0;j<x.length;j++){
                if(x[j]!=1){
                toString(courseName(4),courseName(1));
                }
            }
        }}}

【问题讨论】:

  • 逻辑怎么不行。它有很多代码要查看并尝试破译。顺便说一句,如果你更好地格式化你的代码,它会变得更好。花括号未全部对齐。
  • 我认为问题出在 '' if (x[j] != 1) '',正如我所说,当 x[] 的长度为 1 时,一切正常,但当它更多时超过一,toString 无论如何都会被调用。
  • 什么值被传递到 x 和 y 中,为什么不应该在那个条件下调用 toString?仅查看您的代码并不清楚它应该做什么。
  • 2 个数组被传递,数组中的每个数字代表一个课程。例如: y[] 可以有数字 4,直到 x[] 有数字 1。如果 x[] 中只有一个数字很好,但是当 x[] 中有 1,2,3 时,它进入条件语句每次。
  • 我仍然不知道你在做什么。也许您想要的,在保持大部分代码不变的同时,最初将一个布尔变量设置为 false。在条件中将其设置为 true。循环后检查以查看值。如果是假字。如果为真 - 继续。

标签: java arrays sorting iterator iteration


【解决方案1】:

这很难理解,但我认为您可以将每个 Ifs x[j]!=1x[j]!=2x[j]!=3x[j]!=4 的条件“!=”更改为“==”...

所以每个学期都将代表他们的课程。这是我能理解的。

【讨论】:

    【解决方案2】:

    我不得不删除第二个循环和第二个数组并将它们分别放入一个方法中。成功了!

     public static boolean checkCourse(int []x,int num){
    
    boolean available=false;
        for (int j = 0; j < x.length; j++) {
                    if (x[j] == num) {
                        available=true;
                    }
    
                    }
        return available;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-09-12
      • 1970-01-01
      • 2012-04-27
      • 2020-10-13
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多