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

Java出现“字符串索引超出范围”等错误的原因是什么?[副本]

隆长卿
2023-03-14

这是我的代码。

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {

        Scanner scan=new Scanner(System.in);

        String s;


        int i;
        int f=1,c,t=scan.nextInt();


        for(int j=0;j<t;j++)
            {

            s=scan.nextLine();
            scan.close();
            c=s.charAt(0)-s.charAt(1);
            for(i=2;i<s.length()-1;i=i+2)//HERE loop is upto second last element
                {
                if(s.charAt(i)-s.charAt(i+1)!=c && s.charAt(i+1)- s.charAt(i)!=c)
                    {
                    f=0;
                    break;
                }
            }

            if(f==1)
                System.out.print("Funny");
            else
                System.out.print("Not Funny");
        }
    }
}

错误

线程“main”java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:在solution.main(solution.java:22)处的java.lang.String.charat(String.java:658)处为0

我试着在网上搜索,但我没有得到答案。

共有1个答案

吴同
2023-03-14

错误信息告诉您问题的所在。这就是为什么

Java中“字符串索引超出范围”之类的错误

错误消息告诉您异常发生在第22行,即c=s.charat(0)-s.charat(1);

因为String index out of range:0所以它超出了界限,这意味着当您调用s.charat(0)时,s的长度为0,这意味着s可能是一个空字符串。

 类似资料:
  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至

  • 问题内容: 快速提问。我在程序中有以下代码: 输入是用户输入 是值为0的整数,如所见 运行代码会产生以下错误: 线程“主”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: java.lang.String.charAt为6 ( program.main(program.java:15)) 如果我将 改为0而不是,则不会产生错误… 该怎

  • 问题内容: 我目前正在从一本名为《 Python绝对入门》(第三版)的书中学习python。书中有一个练习,概述了一个子手游戏的代码。我遵循了这段代码,但是我在程序的中间不断返回错误。 这是导致问题的代码: 这也是它返回的错误: 有人可以帮助我解决出现的问题以及如何解决该问题吗? 编辑:我像这样初始化so_far变量: 问题答案: 您好像缩进得太多了。尝试这个:

  • 问题内容: 我猜我正在收到此错误,因为字符串正在尝试对值进行子字符串化。但是那部分不能消除这个问题吗? 这是Java代码段: 我收到此错误: 问题答案: 我猜我正在收到此错误,因为字符串试图将Null值作为子字符串。但是“ .length()> 0”部分不能消除该问题吗? 不,在itemdescription为null时调用itemdescription.length()不会生成StringInd

  • 问题内容: 嗨,我编写了Java代码来查找由其他单词组成的最长单词。我的逻辑是从文本文件中读取单词列表,并将每个单词添加到一个数组中(在文本中,单词被排序,并且每行中只有一个单词)之后,我们检查数组中的每个元素是否具有其他元素作为子字符串。如果是这样,我们计算子字符串的数量。具有最大子串数的元素将是结果 当我给一个只有两个单词的文本文件时,代码正在运行。但是,当有两个以上的单词时,我将出现以下错误

  • 试图用Gradle编译一个Android项目,却出现了一个奇怪的错误。当我运行。尝试了清洁重建,新鲜克隆的repo,不同的分支,同事都能建立AOK。 寻找事物的想法来检查/试图解决这个问题。 *更新:恢复到Gradle 2.11和似乎已经解决了这个问题。* Groovy:2.4.4 Ant:Apache Ant(TM)版本1.9.6编译于2015年6月29日JVM:1.8.0_101(Oracle