二进制转十进制Exception in thread "main"

weixin_41166796 2017-11-24 07:18:07
package com.lanqiaobei;

public class Lan {
public void shi(){
String p = "1010110001100";
double n = 0;
for(int i=0;i<p.length(); i++)
{
n =(n+p.charAt(p.length()-i)*Math.pow(2, p.length()-1-i));
}
System.out.println(n);
}
public static void main(String[] args) {
Lan l=new Lan();
l.shi();
}

}



Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 13
at java.lang.String.charAt(String.java:687)
at com.lanqiaobei.Lan.shi(Lan.java:9)
at com.lanqiaobei.Lan.main(Lan.java:15)
...全文
147 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Royal_lr 2017-11-27
这是典型的数组越界的问题,i=0就报错,仔细看下代码运行流程
  • 打赏
  • 举报
回复
遥远的想念 2017-11-27
数组下标越界了。。比方说一个数组有4个元素 元素下标从0开始 你取a[4]就越界了
  • 打赏
  • 举报
回复
墨笙弘一 2017-11-27
数组越界 看看索引吧
  • 打赏
  • 举报
回复

		String p = "0";				//0字符
		char cc = p.charAt(0);		//48
		double n = cc * Math.pow(2, 0);
		System.out.println(n);		//48
二进制转十进制,这是你要的结果吗?
  • 打赏
  • 举报
回复
qq_34350475 2017-11-25
p.charAt(p.length()-i) 当i=0时,会去执行p.charAt(p.length()),就抛出数组越界异常了
  • 打赏
  • 举报
回复
charAt()方法里的参数是索引,就是从零开始计算的,你一开始的参数p.length-i不就等于p.length吗,而索引最大只到p.length-1
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2017-11-24 07:18
社区公告
暂无公告