string和数字互换

1.string转换为数字

先判断是正数还是负数,即str[0]是字符还是数字(参照ASCII码判断)

如果是正数则for循环从str[0]开始;负数从str[1]开始,最后用0减去即可。

注意要“-‘0’”

#include<string>
string str;
cin>>str;
int len=str.length();
int num=0;
if(str[0]>=30&&str[0]<=39)    //正数
{
    for(int i=0;i<len;i++)
    {
	    num=str[i]+num*10-'0';
    }
}
else    //负数
{
    for(int i=1;i<len;i++)
    {
	    num=str[i]+num*10-'0';
    }
    num=0-num;
}

2.数字转换为string

to_string()函数,整数浮点数都可用

#include<string>
str=to_string(a0);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是 Java 实现罗马数字和阿拉伯数字互换的代码: ```java import java.util.*; public class RomanArabicConverter { private static final Map<Character, Integer> romanMap = new HashMap<Character, Integer>() {{ put('I', 1); put('V', 5); put('X', 10); put('L', 50); put('C', 100); put('D', 500); put('M', 1000); }}; private static final Map<Integer, String> arabicMap = new TreeMap<Integer, String>(Collections.reverseOrder()) {{ put(1000, "M"); put(900, "CM"); put(500, "D"); put(400, "CD"); put(100, "C"); put(90, "XC"); put(50, "L"); put(40, "XL"); put(10, "X"); put(9, "IX"); put(5, "V"); put(4, "IV"); put(1, "I"); }}; public static int romanToArabic(String roman) { int result = 0; int prevValue = 0; for (int i = roman.length() - 1; i >= 0; i--) { int currentValue = romanMap.get(roman.charAt(i)); if (currentValue < prevValue) { result -= currentValue; } else { result += currentValue; } prevValue = currentValue; } return result; } public static String arabicToRoman(int arabic) { StringBuilder result = new StringBuilder(); for (Map.Entry<Integer, String> entry : arabicMap.entrySet()) { int value = entry.getKey(); String symbol = entry.getValue(); while (arabic >= value) { result.append(symbol); arabic -= value; } } return result.toString(); } } ``` 这里我们使用了两个 `Map` 对象实现罗马数字和阿拉伯数字互换,其中 `romanMap` 存储了罗马数字对应的阿拉伯数字,`arabicMap` 存储了阿拉伯数字对应的罗马数字。 `romanToArabic()` 方法用于将罗马数字转换成阿拉伯数字,具体实现中使用一个 `for` 循环遍历罗马数字中的每个字符,通过 `romanMap` 获取对应的阿拉伯数字值,如果当前值小于前一个值,则需要减去当前值,否则需要加上当前值。最终返回累加后的结果。 `arabicToRoman()` 方法用于将阿拉伯数字转换成罗马数字,具体实现中使用一个 `for` 循环遍历 `arabicMap` 中的每个键值对,如果当前阿拉伯数字大于等于当前值,则需要将对应的罗马数字符号添加到结果中,并将当前阿拉伯数字减去当前值,直到当前阿拉伯数字小于当前值。最终返回转换后的罗马数字字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值