首页 > 解决方案 > 循环卡在无限循环中

问题描述

为什么这段代码没有结束。我已经给出了所需的字符串输入和k输入,但我不知道为什么它没有结束。请提供一些见解。

import java.util.*;

public class Main
{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int k = sc.nextInt();
        ArrayList<Character> l = new ArrayList<>();
        for(int i=0; i<s.length(); i++){
            l.add(s.charAt(i));
        }
        
        int count = 0;
        
        int first = 0;
        int last = s.length() - 1;
        
        while(first < last){
            if(l.get(first) + l.get(first + 1) == k || l.get(first) == k){
                count++;
            }
        }
        if(count % 2 == 0){
            System.out.println("B");
        }
        System.out.println("A");
    }
}

标签: java

解决方案


你的输入现在很好。这个问题在整个迭代过程中始终保持不变firstlast添加first++;您的 while 循环,以便在每次迭代时first增加值。

while(first < last){
    if(l.get(first) + l.get(first + 1) == k || l.get(first) == k){
        count++;
    }
    first++;
}

推荐阅读