获取java.lang.StringIndexOutOfBoundsException尝试二进制到文本转换时出错
我是java新手 我想创建一个程序,用java将二进制流转换成文本。在我的程序中,首先我可以给出二进制流的数量作为输入,然后我可以给出二进制数。作为输出,我想得到对应于二进制数的文本。但我的程序中有错误。下面我提到了错误和程序。谢谢获取java.lang.StringIndexOutOfBoundsException尝试二进制到文本转换时出错,java,string,binary,Java,String,Binary,我是java新手 我想创建一个程序,用java将二进制流转换成文本。在我的程序中,首先我可以给出二进制流的数量作为输入,然后我可以给出二进制数。作为输出,我想得到对应于二进制数的文本。但我的程序中有错误。下面我提到了错误和程序。谢谢 错误: 线程“main”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:8 位于java.lang.String.substring(String.java:1963) 在javaapplicati
- 错误:
intm=Integer.parseInt(s.substring(8*k,(k+1)*8),2)代码>
- 代码:
import java.util.Scanner;
public class JavaApplication32 {
public static void main(String[] args) {
// TODO code application logic here
String s="";
int j;
Scanner a=new Scanner(System.in);
int b=a.nextInt();
String arr[]=new String[b];
for(int i=0;i<b;i++){
arr[i]=a.next();
}
for(j=0;j<b;j++){
for(int k=0;k<arr[j].length()/8;k++){
int m = Integer.parseInt(s.substring(8*k,(k+1)*8),2);
s += (char)(m);
}
System.out.println(s);
s="";
}
}
}
import java.util.Scanner;
公共类JavaApplication32{
公共静态void main(字符串[]args){
//此处的TODO代码应用程序逻辑
字符串s=“”;
int j;
扫描仪a=新的扫描仪(System.in);
int b=a.nextInt();
字符串arr[]=新字符串[b];
对于(int i=0;i在这一行:
String s=”“;
使用0长度字符串初始化字符串s
,并在循环中使用它,而不分配它:
for(int k=0;k的可能副本尝试用自己的话解释代码应该如何工作。循环中的条件基于arr[j]
,但您正在“切割”s
中的部分也应该存储您的结果。@Tom我尽了最大的努力。我是编程新手。我无法理解这一点。但感谢您的努力。@Pshemo当您看到我的示例时,您将了解我的程序。我是编程新手。请帮助我解决这个问题。让我重新表述我的建议。想象您正在向某人解释您的程序e(这称为)。通过这种方式,您可以注意到您想要做的事情,但可以看到代码的某些部分实际上并没有按照您的要求进行操作。目前,我能给您的最佳建议是使用全名重命名变量以描述其用途。例如,不要使用s
而使用resultString
。这将允许您看到您的代码正在执行ngresultString.substring(8*k,(k+1)*8)
,但是否确实要从结果中选取新数据?