【问题标题】:Change for-loop to while loop [closed]将for循环更改为while循环[关闭]
【发布时间】:2020-09-17 17:53:43
【问题描述】:

如何将for循环改为while循环?

for (i = 0; i < arr.length; i++) {
            if (arr[i] == k) {
                found = true;
                break;
            }

        }

代码:

import java.util.Scanner;

class Algorithmus {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Geben sie den gesuchten Wert ein: ");
        int k = s.nextInt();
        System.out.println("Geben sie die Länge des Arrays ein: ");
        int n = s.nextInt();
        int arr[] = new int[n];
        int i = 0;
        System.out.println("Geben sie die Werte ein:");
        for(i = 0;i<n;i++){
            arr[i] = s.nextInt();
        }
        boolean found = false;
        for (i = 0; i < arr.length; i++) {
            if (arr[i] == k) {
                found = true;
                break;
            }

        }
        if (found==true) {
            System.out.println((i+1));
        } else {
            System.out.println((arr.length + 1));
        }
    }
}

结构应该是:

BEGIN
Input: k1, ..., kn, k;
found := FALSE;
WHILE NOT found AND „not all elements were viewed“ DO
„take the next element ki“;
found := (ki = k)
END (* WHILE *);
IF found THEN
Output: i
ELSE
OUtput: n + 1
END (* IF *)
END

【问题讨论】:

    标签: java arrays loops for-loop while-loop


    【解决方案1】:
    int i=0;
    while (i < arr.length) {
        if (arr[i] == k) {
            found = true;
            break;
        }
        i++;
    }
    

    【讨论】:

    • 你的程序是为了什么而实现的?
    • while 循环是代码的一部分,应该在代码的上下文中工作。
    【解决方案2】:

    试试这个代码

    import java.util.Scanner;
    
    public class Algorithmus  {
            public static void main(String[] args) {
                Scanner s = new Scanner(System.in);
                System.out.println("Geben sie den gesuchten Wert ein: ");
                int k = s.nextInt();
                System.out.println("Geben sie die Länge des Arrays ein: ");
                int n = s.nextInt();
                int arr[] = new int[n];
                int i = 0;
                System.out.println("Geben sie die Werte ein:");
                for(i = 0;i<n;i++){
                    arr[i] = s.nextInt();
                }
                boolean found = false;
                i=0;
                while (i < arr.length) {
    
                    if (arr[i] == k) {
                        found = true;
                        break;
                    }
                i++;
    
                }
    
    
                if (found==true) {
                    System.out.println((i+1));
                } else {
                    System.out.println((arr.length + 1));
                }
            }
        }
    

    【讨论】:

    • 这个工作正常,我想我知道我的错。我删除了 i=0;一直以来,我都认为它已经被宣布了。现在我只需要更改 if-output is i 而不是 i+1 我忘了在我的问题中解释它。
    • 代码现在运行良好。我只需要添加 i++;在 if(found) 中并打印出 i ,现在我得到结构的结果。感谢您的帮助。
    【解决方案3】:

    试试这个

    int i = 0;
    while(arr.length > i){
    //code
    ++i;
    }
    

    【讨论】:

      【解决方案4】:

      你可以这样做:

      int idx = 0;
      while(idx < arr.length && a[idx] != k) {
          idx++
      }
      
      if(idx == arr.length) {
          // element not found, do something
      } else {
          // element found
      }
      

      【讨论】:

        【解决方案5】:

        相当于:

        int i = 0;
        
        while (i < arr.length) {
            if (arr[i] == k) {
                found = true;
                break;
            }
            ++i;
        }
        

        【讨论】: