溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

利用Java怎么對(duì)羅馬數(shù)字與阿拉伯?dāng)?shù)字進(jìn)行轉(zhuǎn)換

發(fā)布時(shí)間:2021-02-23 15:03:47 來(lái)源:億速云 閱讀:311 作者:戴恩恩 欄目:編程語(yǔ)言

這篇文章主要介紹了利用Java怎么對(duì)羅馬數(shù)字與阿拉伯?dāng)?shù)字進(jìn)行轉(zhuǎn)換,此處通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下:

Java可以用來(lái)干什么

Java主要應(yīng)用于:1. web開(kāi)發(fā);2. Android開(kāi)發(fā);3. 客戶端開(kāi)發(fā);4. 網(wǎng)頁(yè)開(kāi)發(fā);5. 企業(yè)級(jí)應(yīng)用開(kāi)發(fā);6. Java大數(shù)據(jù)開(kāi)發(fā);7.游戲開(kāi)發(fā)等。

羅馬數(shù)字的表示主要依賴以下幾個(gè)基本符號(hào):

    I  1
    V  5
    X  10
    L  50
    C  100
    D  500
    M  1000

這里,我們只介紹一下1000以內(nèi)的數(shù)字的表示法。

單個(gè)符號(hào)重復(fù)多少次,就表示多少倍。最多重復(fù)3次。比如:CCC表示300  XX表示20,但150并不用LLL表示,這個(gè)規(guī)則僅適用于I X C M。

如果相鄰級(jí)別的大單位在右,小單位在左,表示大單位中扣除小單位。比如:IX表示9  IV表示4  XL表示40 更多的示例參見(jiàn)下表,你找到規(guī)律了嗎?

I,1
II,2
III,3
IV,4
V,5
VI,6
VII,7
VIII,8
IX,9

X,10
XI,11
XII,12
XIII,13
XIV,14
XV,15
XVI,16
XVII,17
XVIII,18
XIX,19
XX,20
XXI,21
XXII,22
XXIX,29
XXX,30
XXXIV,34
XXXV,35
XXXIX,39
XL,40
L,50
LI,51
LV,55
LX,60
LXV,65
LXXX,80
XC,90
XCIII,93
XCV,95
XCVIII,98
XCIX,99

C,100
CC,200
CCC,300
CD,400
D,500
DC,600
DCC,700
DCCC,800
CM,900
CMXCIX,999

本題目的要求是:請(qǐng)編寫(xiě)程序,由用戶輸入若干個(gè)羅馬數(shù)字串,程序輸出對(duì)應(yīng)的十進(jìn)制表示。

輸入格式是:第一行是整數(shù)n,表示接下來(lái)有n個(gè)羅馬數(shù)字(n<100)。以后每行一個(gè)羅馬數(shù)字。羅馬數(shù)字大小不超過(guò)999。

要求程序輸出n行,就是羅馬數(shù)字對(duì)應(yīng)的十進(jìn)制數(shù)據(jù)。

例如,用戶輸入:

3
LXXX
XCIII
DCCII

則程序應(yīng)該輸出:

80
93
702

import java.util.Scanner;
/**
 * 請(qǐng)編寫(xiě)程序,由用戶輸入若干個(gè)羅馬數(shù)字串,程序輸出對(duì)應(yīng)的十進(jìn)制表示。
 *
 * 輸入格式是:第一行是整數(shù)n,表示接下來(lái)有n個(gè)羅馬數(shù)字(n<100)。以后每行一個(gè)羅馬數(shù)字。羅馬數(shù)字大小不超過(guò)999。
 *
 * 要求程序輸出n行,就是羅馬數(shù)字對(duì)應(yīng)的十進(jìn)制數(shù)據(jù)。
 *
 * 例如,用戶輸入: 3 LXXX XCIII DCCII
 *
 * 則程序應(yīng)該輸出: 80 93 702
 *
 * @author Administrator
 *
 */
public class RomeToArabic {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("億速云測(cè)試結(jié)果:");
    Scanner mScanner = new Scanner(System.in);
    System.out.println(r2a(mScanner.nextLine()));
    System.out.println(a2r(mScanner.nextInt()));
  }
  /**
   * 把羅馬數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字
   *
   * @param m
   * @return
   */
  public static int r2a(String m) {
    int graph[] = new int[400];
    graph['I'] = 1;
    graph['V'] = 5;
    graph['X'] = 10;
    graph['L'] = 50;
    graph['C'] = 100;
    graph['D'] = 500;
    graph['M'] = 1000;
    char[] num = m.toCharArray();
    int sum = graph[num[0]];
    for (int i = 0; i < num.length - 1; i++) {
      if (graph[num[i]] >= graph[num[i + 1]]) {
        sum += graph[num[i + 1]];
      } else {
        sum = sum + graph[num[i + 1]] - 2 * graph[num[i]];
      }
    }
    return sum;
  }
  /**
   * 把阿拉伯?dāng)?shù)字轉(zhuǎn)換為羅馬數(shù)字
   *
   * @param number
   * @return
   */
  public static String a2r(int number) {
    String rNumber = "";
    int[] aArray = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
    String[] rArray = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X",
        "IX", "V", "IV", "I" };
    if (number < 1 || number > 3999) {
      rNumber = "-1";
    } else {
      for (int i = 0; i < aArray.length; i++) {
        while (number >= aArray[i]) {
          rNumber += rArray[i];
          number -= aArray[i];
        }
      }
    }
    return rNumber;
  }
}

運(yùn)行結(jié)果:

利用Java怎么對(duì)羅馬數(shù)字與阿拉伯?dāng)?shù)字進(jìn)行轉(zhuǎn)換

到此這篇關(guān)于利用Java怎么對(duì)羅馬數(shù)字與阿拉伯?dāng)?shù)字進(jìn)行轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)利用Java怎么對(duì)羅馬數(shù)字與阿拉伯?dāng)?shù)字進(jìn)行轉(zhuǎn)換的內(nèi)容請(qǐng)搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI