媪姝 2023-11-06 20:20 采纳率: 0%
浏览 13

团体程序设计天梯赛-练习集 吃火锅



package com.sun.test1;

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Integer i = 0;
        int count=0;
        int sum=0;
        Map<Integer, String> map = new HashMap<>();
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        while (!input.equals(".")) {
            i++;
            String line = input;
            map.put(i, line);
            input = sc.nextLine();
            sum+=1;
        }
        System.out.println(sum);
        for (Integer key : map.keySet()) {
            if( map.get(key).contains("chi1 huo3 guo1"))
            {
                count+=1;
                if(count==1) {
                    System.out.print(key + " ");
                }
            }

        }
        if(count==0) {
            System.out.println("-_-#");
        }
        else {
            System.out.println(count);
        }
    }
}

这个代码在团体程序设计天梯赛-练习集吃火锅那道题中为什么会有如下错误

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-07 05:29
    关注

    【以下回答由 GPT 生成】

    对于你提供的代码,我发现有一个错误原因是在你的while循环中,判断输入结束的条件有误。你使用的是判断输入的字符串是否等于"."来结束循环,但没有对输入做任何处理,导致循环无法正常结束。

    为了解决这个问题,你可以修改代码,添加一个合适的判断条件来结束循环。一种常见的做法是使用一个空字符串作为输入的结束标志。具体的修改如下:

    // 将原来的判断条件改为判断输入是否为空字符串
    while (!input.isEmpty()) {
        ...
        input = sc.nextLine();
        sum += 1;
    }
    

    另外,你在统计包含"chi1 huo3 guo1"的行数时,进行了一些额外的判断和输出处理,可以简化一下。可以直接在循环中进行统计,最后再输出结果。具体的修改如下:

    for (Integer key : map.keySet()) {
        if (map.get(key).contains("chi1 huo3 guo1")) {
            count += 1;
            System.out.print(key + " ");
        }
    }
    System.out.println();
    if (count == 0) {
        System.out.println("-_-#");
    } else {
        System.out.println(count);
    }
    

    这样修改后,你可以再次运行代码看看是否还会出现错误。如果还有其他问题,请提供具体的错误信息,以便我更好地帮助你解决。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月6日