当前位置: 首页 > 知识库问答 >
问题:

代码一直给我例外。我不知道为什么

赖星驰
2023-03-14

抱歉,如果不允许这样做。这是我第一次问问题。无论如何,我应该实现一个程序,根据文本读取等级。

“实施一个程序,根据以下内容计算理解某些文本所需的大致年级水平。文本:恭喜!今天是你的一天。你要去很棒的地方!你走了,走了!3 年级

在完成代码之后。每次我编译它时,它都会给我一个异常,即我除以零。几乎就像在我要求用户输入文本后,它根本不被读取,字母计数保持在零。我不知道如何绕过它。下面是我导入java.util.*的代码;导入java.lang.Math;

公共类可读性 {

    public static void main(String[] args) {
       
        
        Scanner sc = new Scanner(System.in);
        int letterCount=0;
        int wordCount = 0;
        int sentenceCount = 0;
        
        // Just taking the input
          System.out.println("Please provide some text as input");
            String text = sc.nextLine();
        
          
            
        for (int i = 0; i< text.length(); i++) {
            // checking letters
            if ((text.charAt(i) == 'a' && text.charAt(i) == 'z') || (text.charAt(i) == 'A'  && text.charAt(i) == 'Z' ))
            {
                letterCount++;
            }
            // any chars separated by space is a word
            if (text.charAt(i) == ' ' || text.charAt(i) == '\0')
            {
                wordCount++;

            }
            // when you see a . ! or ? count as sentence
            if (text.charAt(i) == '!' || text.charAt(i) == '.'|| text.charAt(i) == '?')
            {
                sentenceCount++;
            }
            
        }
        
        
        double averageWordsPer100 = (letterCount * 100) / wordCount;
        double averageSentencePer100 = (sentenceCount * 100) / wordCount;
        int readingIndex = (int) Math.round(0.0588 * averageWordsPer100 - 0.296 * averageSentencePer100 - 15.8);
        
       

                
        if (readingIndex < 1)
        {
            System.out.println("Before Grade 1");
        }
        else if (readingIndex > 16)
        {
            System.out.println("Grade 16");
        }
        else
        {
            System.out.println("Grade " + readingIndex);
        }
       
    }
   
}

共有1个答案

商麒
2023-03-14

我编译并执行了这个项目,没有显示任何问题,除了当输入有0个单词时。为了避免除以0异常,您可以添加这段代码:

    int readingIndex = 0;
    
    if (wordCount != 0){
        double averageWordsPer100 = (letterCount * 100) / wordCount;
        double averageSentencePer100 = (sentenceCount * 100) / wordCount;
        readingIndex = (int) Math.round(0.0588 * averageWordsPer100 - 0.296 * averageSentencePer100 - 15.8);
    }

您可以将readingIndex的初始值设置为您想要的值。然后,如果wordCount为0,将使用readingIndex初始值。

 类似资料:
  • 给定一个0和1的数组,我们最多可以将K个值从0更改为1。 返回仅包含1的最长(连续)子数组的长度。 例1: 例2: 注: https://leetcode.com/problems/max-consecutive-ones-iii/ 这是问题链接。在第一个测试用例中,我得到了输出9,但应该是6。我不知道哪里出了问题?

  • 我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 输入三角形的三条边

  • 我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 进入三角形的三个边

  • 如果参数的类型是int或float,函数应该返回>函数输入的绝对值。 否则,函数应返回“nope” 我已经完成了第一个任务,但我认为我已经完成了任务

  • > 控制器 } 服务 -板 > 原因:java。lang.IllegalArgumentException:给定的id不能为null!位于组织。springframework。util。明确肯定组织中的notNull(Assert.java:201)。springframework。数据jpa。存储库。支持简单Parepository。java上的deleteById(SimpleJpaRepos

  • 当我尝试编译这段代码时,Eclipse会出现以下两个错误: > 用于函数:maxmin的非法修饰符;只允许最终 对于:Mn不能解析为变量 为什么会出现这两个错误? 我想这可能已经回答了这个问题,但我不明白其中使用的术语。 这是我的代码: