【问题标题】:How to fix the "if" always going "true" [duplicate]如何解决“如果”总是“真”[重复]
【发布时间】:2019-09-02 08:41:01
【问题描述】:

我在java中编写了一个左旋转脚本,我在代码中使用了2个for循环。

我使用了 if 条件来检查第二个循环中的第一次迭代,然后在其中进行一些处理。我传递了 2 个参数,“a”是一个数组,“d”是没有旋转的。

static int[] rotLeft(int[] a, int d) {
    int temp1 = 0;
    int temp = 0;
    int count = 0;
    int j;
    for(int i = 0; i < d; i++){
        for(j = a.length - 1; j > 0; j--){
            if(j == a.length - 1){
                temp1 = a[0];
                temp = a[j];
                a[j] = temp1;
            }
            else{
                temp1 = a[j];
                a[j] = temp;
            }                
    }
    return a;
}

但问题是每次迭代都是如此。我知道我犯了一些愚蠢的错误。

【问题讨论】:

  • 我怀疑你打算在你的else 块周围有{}
  • else 之后缩进了两行,但其中只有一行是if/else 语句的一部分。
  • 如何在 for 块之外执行 if 块中的所有内容(没有 if),以及迭代中的所有以下情况?这里不需要 if。
  • Tobias 想告诉你的是:这段代码真的很难阅读和理解。它从没有像ad 这样的变量名开始。
  • 大家感谢您在 else 之后指出大括号错误,但主要问题仍然存在。

标签: java if-statement


【解决方案1】:
        else
            temp1 = a[j];
            a[j] = temp;

我怀疑你的意思是:

        else {
            temp1 = a[j];
            a[j] = temp;
        }

空白在 Java 中没有语义含义(与少数其他语言不同,如 Python)。

【讨论】:

  • @apoorva-sharma 提示:为避免此类问题,强烈建议您正确缩进您的代码。缩进是有原因的。
  • @JorgeFuentesGonzález 我建议使用格式化工具,而不是仅仅说“你应该正确地做某事”——毕竟,谁故意做错了?
  • @AndyTurner “谁故意弄错了?” ——那些认为这无关紧要的人。
  • @khelwood 他们仍然不(大概)打算编写不正确的代码。
  • @AndyTurner 我不喜欢格式化工具。考虑到我在编码时应该正确缩进,我宁愿浪费一点时间。你知道现在是自动的,但是当你是新手时,你并没有给予足够的关注。当我开始时,我记得我决定投入更多精力正确缩进而不是仅仅添加代码行的确切时间。我认为“不要低估缩进并浪费时间”是一个很好的提示。
猜你喜欢
  • 2018-02-24
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 2012-06-26
  • 2018-06-22
  • 1970-01-01
相关资源
最近更新 更多