java 字符串 报错-java程序在eclipse运行正确,在牛客网测试界面运行报错

问题描述

java程序在eclipse运行正确,在牛客网测试界面运行报错

在eclipse可以正常运行,在牛客网的测试里报错:“运行错误:请检查是否存在数组越界非法访问,野指针乱访问,空指针乱访问等情况。”
题目:连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入例子:
abc
123456789

输出例子:
abc00000
12345678
90000000

import java.util.Scanner;
public class SplitTest {

    private void getresult(String str)
        {
          int len=str.length();

          if(str!=null && len<101 && len>0)
          {
              if(len%8>0)
              {
                  for(int i=0;i<8-len%8;i++)
                  {
                      str=str+"0";
                  }
              }
              char []ch=str.toCharArray();
              //int num=str.length();
              for(int i=0;i<(len/8+1);i++)
                {
                  for(int j=i*8;j<(i+1)*8;j++)
                   {
                        System.out.print(ch[j]);
                    }
                    System.out.println("r");
                }
          }

        }

    public static void main(String [] args)
    {
        Scanner sc=new Scanner(System.in);

        //while(sc.hasNextLine())
        {
            SplitTest  inst=new SplitTest();
            String input=sc.next();
            String input1=sc.next();
            inst.getresult(input);
            inst.getresult(input1);
            sc.close();
        }

    }
}

解决方案

程序根本就不对
你输入aaaaaaaaaaaaaaaaa
你输出什么?

解决方案二:

1aaaaaaaaa
2aaaaaaaaaaaaaaa
3aaaaaaaaaaaaaaaa
你这样输入

解决方案三:

例如 for(int i=0;i<(len/8+1);i++) 中 当 len 等于 8 的位数时,你的代码肯定会越界。

解决方案四:

 private void getresult(String str)
        {
          int len=str.length();       //假设初始len为8

          if(str!=null && len<101 && len>0)
          {
              if(len%8>0)        //因为len为8所以跳过该if块
              {
                  for(int i=0;i<8-len%8;i++)
                  {
                      str=str+"0";
                  }
              }
              char []ch=str.toCharArray();   //因为已确定len为8. 则数组chsize也为8
              //int num=str.length();
              for(int i=0;i<(len/8+1);i++)       //**注意这里!因为len为8所以实际上你的for循环跳出条件为i<2。 那么你的外循环必须走两次。**
                {
                  for(int j=i*8;j<(i+1)*8;j++)    //已知你的len为8并且ch的size也为8,但是外循环走两次,明显输出到了ch[8]-ch[15]。所以越界
                   {
                        System.out.print(ch[j]);
                    }
                    System.out.println("r");
                }
          }

        }

时间: 2024-10-31 14:44:13

java 字符串 报错-java程序在eclipse运行正确,在牛客网测试界面运行报错的相关文章

牛客网 --java问答题

http://www.nowcoder.com/ 主要是自己什么都不怎么会.在这里可以学习很多的! 第一天看题自己回答,第二天看牛客网的答案! 1 什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"?    看到这个问题的时候,我首先想到了JVM.接着看  平台无关的编程语言.对这个问题我还真不知道. 2 JDK和JRE的区别是什么?    JDK--->JAVA开发工具包  :JRE--->JAVA运行环境   JDK包含了JRE 3 "stat

牛客网:一个只面向程序员的“猿题库”

如果以媒体惯用的角度报道,这个故事应该是这样的:在阿里巴巴 上市前夜离职,舍弃百万股权毅然辞职创业.但这个方式还是感觉略LOW.正常的故事应该是这样的:都是前人人同事,一个月以前团队成员还分散在各地兼职做产品.一个月之后大家分别从现东家辞职来到北京回龙观居于民宅创业.微博头像头戴带小花的人叫叶向宇,此前一直在阿里巴巴做技术专家.他们目前的创业项目是牛客网,一款面向程序员的在线面试 笔试题库产品.形象点来说:你可以理解它为面向程序员的猿题库".他们把大型公司的程序员笔试面试的题目进行收集,前期主要

java面试知识(来自牛客网)

接口和抽象类的区别是什么? v接口和抽象类的区别是什么?   Java提供和支持创建抽象类和接口.它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的.而抽象类则可以同时包含抽象和非抽象的方法.类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个接口,它必须要实现接口声明的所有方法.但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的.抽象类可以在不提供接口方法实现的情况下实现接口.Java接口中声明的变量默认都是final的.抽象类可以包含非

Java 字符串的拼接详解_java

工作日忙于项目的逻辑实现,周六有点时间,从书柜里拿出厚厚的英文版Thinking In Java,读到了字符串对象的拼接.参考着这本书做个翻译,加上自己思考的东西,写上这篇文章记录一下. 不可变的String对象 在Java中,String对象是不可变的(Immutable).在代码中,可以创建多个某一个String对象的别名.但是这些别名都是的引用是相同的. 比如s1和s2都是"droidyue.com"对象的别名,别名保存着到真实对象的引用.所以s1 = s2 String s1

Java字符串分割

1. java.lang.String 的 split() 方法, JDK 1.4 or later split public String[] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串. 此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止.数组中的子字符串按它们在此字符串中的顺序排列.如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串. limit 参数

JAVA 字符串加密、密码加密实现方法_java

在我们的程序设计中,我们经常要加密一些特殊的内容,今天总结了几个简单的加密方法,分享给大家! 如何用JAVA实现字符串简单加密解密?为保证用户信息安全,系统在保存用户信息的时候,务必要将其密码加密保存到数据库.  需要使用密码的时候,取出数据,解密处理即可.  避免保存明文密码. 方案一: package com.tnt.util; import java.security.MessageDigest; public class StringUtil { private final static

java 字符串分割的三种方法(总结)_java

最近在项目中遇到一个小问题,一个字符串分割成一个数组,类似String str="aaa,bbb,ccc"; 然后以","为分割符,将其分割成一个数组,用什么方法去实现呢? 第一种方法: 可能一下子就会想到使用split()方法,用split()方法实现是最方便的,但是它的效率比较低 第二种方法: 使用效率较高的StringTokenizer类分割字符串,StringTokenizer类是JDK中提供的专门用来处理字符串分割子串的工具类.它的构造函数如下: publ

eclipse报错-JAVA程序编程成CLASS文件后能在CMD运行,但是无法运行ECLIPSE。

问题描述 JAVA程序编程成CLASS文件后能在CMD运行,但是无法运行ECLIPSE. JAVA程序编程成CLASS文件后能在CMD运行,但是无法运行ECLIPSE,报错 解决方案 具体是哪里错了,有截图吗 解决方案二: 直接将该程序的源代码复制到eclipse某项目的src下再运行该程序 解决方案三: http://jingyan.baidu.com/article/15622f247de105fdfcbea5c9.html 解决方案四: 是无法运行ECLIPSE还是代码在ECLIPSE上报

初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点。

问题描述 初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点. import java.util.Scanner; class Yanzheng{ private String n; private String p; public void setNa(String na){ this.n = na; } public void setPa(String pa){ this.p = pa; } public String getNa(){ return n;