leetcode 13用java写的,循环一直少一个,更改条件就报错,求前辈指点。。。

弱水提沧海 2016-12-14 07:04:44
我的代码如下,罗马数字转换为整型,我的情况是 XCIX应该输出99,我输出的结果是89
.————————————————————————————————————————
package com.hhu.test;

import java.util.Scanner;

public class Solution {

private static char roma[]={'I','V','X','L','C','D','M'};
private static int rs = 0;

public int romanToInt(String s){
int len = s.length();
int b[]= new int[len];


char a[] = s.toCharArray();

for(int i=0;i<s.length();i++){

if(a[i]==roma[0]){
int I = 1;
b[i] = I;
}else if(a[i]==roma[1]){
int V = 5;
b[i] = V;
}else if(a[i]==roma[2]){
int X = 10;
b[i] = X;
}else if(a[i]==roma[3]){
int L = 50;
b[i] = L;
}else if(a[i]==roma[4]){
int C = 100;
b[i] = C;
}else if(a[i]==roma[5]){
int D = 500;
b[i] = D;
}else if(a[i]==roma[6]){
int M = 1000;
b[i] = M;
}

}

for(int i=0;i<s.length();i++){

if(b[i]<b[i+1]){
rs += 0 - b[i];

}else{
rs += b[i];
}

}

return rs;
}

public static void main(String[] args){

Scanner in = new Scanner(System.in);
String s= in.nextLine();

Solution solution = new Solution();
solution.romanToInt(s);

System.out.println("结果为:"+rs);
}
}

求指点不足之处
...全文
307 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
弱水提沧海 2016-12-19
  • 打赏
  • 举报
回复
首先,程序上传的修改到一半的,本来的程序是for 循环那s.length()-1,这样你可以试试,程序是可以运行的,并不是无法运行。接着,谢谢你的方法,可以成功运行,但还想问下,我之前是在if那添加的i<s.length()-1跟你这个i+1<s.length()应该是一样的,为什么无法运行呢,数组越界了
  • 打赏
  • 举报
回复
你的程序根本就用不了,无论输入什么都报错
弱水提沧海 2016-12-16
  • 打赏
  • 举报
回复
没有那个前辈看到嘛
  • 打赏
  • 举报
回复

for (int i = 0; i < s.length(); i++) {

			if ((i + 1)<s.length()&&b[i] < b[i + 1]) {
				rs += 0 - b[i];
			} else {
				rs += b[i];
			}
		}
第二个for循环改为上面这样,避免数组越界

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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