二进制转十进制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)
...全文
186 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Royal_lr 2017-11-27
  • 打赏
  • 举报
回复
这是典型的数组越界的问题,i=0就报错,仔细看下代码运行流程
遥远的想念 2017-11-27
  • 打赏
  • 举报
回复
数组下标越界了。。比方说一个数组有4个元素 元素下标从0开始 你取a[4]就越界了
墨笙弘一 2017-11-27
  • 打赏
  • 举报
回复
数组越界 看看索引吧
繁华终归落尽 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()),就抛出数组越界异常了
天之上有什么 2017-11-25
  • 打赏
  • 举报
回复
charAt()方法里的参数是索引,就是从零开始计算的,你一开始的参数p.length-i不就等于p.length吗,而索引最大只到p.length-1

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧