欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)的求解經(jīng)典羅馬數(shù)字和阿拉伯?dāng)?shù)字相互轉(zhuǎn)換問(wèn)題示例

 更新時(shí)間:2018年04月17日 09:47:19   作者:u010046914  
這篇文章主要介紹了Java實(shí)現(xiàn)的求解經(jīng)典羅馬數(shù)字和阿拉伯?dāng)?shù)字相互轉(zhuǎn)換問(wèn)題,涉及java輸入輸出及字符串、數(shù)組的遍歷與轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java實(shí)現(xiàn)的求解經(jīng)典羅馬數(shù)字和阿拉伯?dāng)?shù)字相互轉(zhuǎn)換問(wèn)題。分享給大家供大家參考,具體如下:

古羅馬帝國(guó)開創(chuàng)了輝煌的人類文明,但他們的數(shù)字表示法的確有些繁瑣,尤其在表示大數(shù)的時(shí)候,現(xiàn)在看起來(lái)簡(jiǎn)直不能忍受,所以在現(xiàn)代很少使用了。之所以這樣,不是因?yàn)榘l(fā)明表示法的人的智力的問(wèn)題,而是因?yàn)橐粋€(gè)宗教的原因,當(dāng)時(shí)的宗教禁止在數(shù)字中出現(xiàn)0的概念!

羅馬數(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 更多的示例參見下表,你找到規(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)編寫程序,由用戶輸入若干個(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)編寫程序,由用戶輸入若干個(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é)果:

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • SpringBoot開發(fā)之?dāng)r截器實(shí)例

    SpringBoot開發(fā)之?dāng)r截器實(shí)例

    這篇文章主要介紹了SpringBoot開發(fā)之?dāng)r截器實(shí)例,Spring?Boot簡(jiǎn)介Spring?Boot發(fā)展史SpringBoot的魅力SpringBoot的優(yōu)點(diǎn)總結(jié)Spring?Boot是一個(gè)基于Spring框架的快速開發(fā)腳手架,它簡(jiǎn)化了Spring應(yīng)用的初始化和搭建過(guò)程,需要的朋友可以參考下
    2023-09-09
  • SpringBoot3實(shí)現(xiàn)webclient的通用方法詳解

    SpringBoot3實(shí)現(xiàn)webclient的通用方法詳解

    Spring Boot WebClient 是 Spring Framework 5 中引入的一個(gè)新的響應(yīng)式 Web 客戶端,用于異步和響應(yīng)式地與外部服務(wù)進(jìn)行通信,下面我們就來(lái)看看SpringBoot3實(shí)現(xiàn)webclient的通用方法吧
    2024-04-04
  • springboot執(zhí)行延時(shí)任務(wù)之DelayQueue的使用詳解

    springboot執(zhí)行延時(shí)任務(wù)之DelayQueue的使用詳解

    DelayQueue是一個(gè)無(wú)界阻塞隊(duì)列,只有在延遲期滿時(shí),才能從中提取元素。這篇文章主要介紹了springboot執(zhí)行延時(shí)任務(wù)-DelayQueue的使用,需要的朋友可以參考下
    2019-12-12
  • Java根據(jù)正整數(shù)的位數(shù)并逆序打印出各位數(shù)字

    Java根據(jù)正整數(shù)的位數(shù)并逆序打印出各位數(shù)字

    給一個(gè)不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字,需要的朋友可以參考下
    2017-02-02
  • Jackson常用方法以及jacksonUtil工具類詳解

    Jackson常用方法以及jacksonUtil工具類詳解

    這篇文章主要介紹了Jackson常用方法以及jacksonUtil工具類詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 關(guān)于使用ContextClassLoader遇到的問(wèn)題

    關(guān)于使用ContextClassLoader遇到的問(wèn)題

    這篇文章主要介紹了關(guān)于使用ContextClassLoader遇到的問(wèn)題,ContextClassLoader是通過(guò)Thread.currentThread().getContextClassLoader()返回該線程上下文的ClassLoader,需要的朋友可以參考下
    2023-10-10
  • spring-cloud Sleuth的使用方法

    spring-cloud Sleuth的使用方法

    這篇文章主要介紹了spring-cloud Sleuth的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Java Spring之@Async原理案例詳解

    Java Spring之@Async原理案例詳解

    這篇文章主要介紹了Java Spring之@Async原理案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • RocketMq 消息重試機(jī)制及死信隊(duì)列詳解

    RocketMq 消息重試機(jī)制及死信隊(duì)列詳解

    這篇文章主要為大家介紹了RocketMq 消息重試機(jī)制及死信隊(duì)列詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Java中finalize()詳解及用法

    Java中finalize()詳解及用法

    這篇文章主要介紹了Java中finalize()詳解及用法的相關(guān)資料,final是Java的關(guān)鍵字,它所表示的是“這部分是無(wú)法修改的”,需要的朋友可以參考下
    2017-03-03

最新評(píng)論