Here you can find the source of toDecimal(String number)
public static int toDecimal(String number)
//package com.java2s; /**/* w w w . j av a 2s . co m*/ * * maer - Solutions to problems of Project Euler * Copyright (C) 2011, Sandeep Gupta * http://www.sangupta.com/projects/maer * * The file is licensed under the the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * limitations under the License. * */ public class Main { public static int toDecimal(String number) { number = number.toUpperCase(); int decimal = 0; char lastChar = 0; for (int index = 0; index < number.length(); index++) { char c = number.charAt(index); switch (c) { case 'I': decimal += 1; break; case 'V': if (lastChar != 'I') { decimal += 5; } else { decimal += 3; } break; case 'X': if (lastChar != 'I') { decimal += 10; } else { decimal += 98; } break; case 'L': if (lastChar != 'X') { decimal += 50; } else { decimal += 30; } break; case 'C': if (lastChar != 'X') { decimal += 100; } else { decimal += 80; } break; case 'D': if (lastChar != 'C') { decimal += 500; } else { decimal += 300; } break; case 'M': if (lastChar != 'C') { decimal += 1000; } else { decimal += 800; } break; } lastChar = c; } return decimal; } }