Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >添加双倍,而不是求和

添加双倍,而不是求和
EN

Stack Overflow用户
提问于 2019-02-24 16:18:48
回答 2查看 77关注 0票数 2

我正在做一个计算器,每当我的计算器加起来一个数字,它就把它们连在一起。

这方面的一个例子是3+5,它给了我35。我把数字转换成双倍,它仍然给了我35。这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Console.Write("Enter a Number: ");
double num1 = Convert.ToDouble(Console.ReadLine());

Console.Write("Enter a Operator: ");
string op = Console.ReadLine();

Console.Write("Enter a Number: ");
double num2 = Convert.ToDouble(Console.ReadLine());

if (op == "+")
{
    Console.WriteLine(num1 + " plus " + num2 + " is " + num1 + num2);
}

Console.ReadLine();

谢谢你看我的帖子祝你今天愉快。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-24 16:25:35

因为使用+在表达式中包含字符串,并且由于这些字符串参数在表达式中的出现顺序,所以C#编译器将+操作符视为字符串连接。

更详细地说:+被解释为字符串连接,因为表达式是从左到右计算的。第一个评估术语是num1 + " plus "。由于涉及一个字符串,所以将第一个+作为字符串连接的运算符处理。在计算到字符串的第一个术语时,第二个和后面的第二个+参数也被视为字符串连接,因为每个(部分)项的左侧总是被求值为字符串。

修复代码的一种“廉价”方法是使用parantheses帮助编译器区分算术运算符和字符串连接运算符:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Console.WriteLine(num1 + " plus " + num2 + " is " + ( num1 + num2 ) );

可以通过使用字符串内插(注意字符串前面的$符号)来实现更安全和更易读的输出写入方式,这可以方便地消除+操作符的混淆:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Console.WriteLine($"{num1} plus {num2} is {num1 + num2}");

(感谢@AlexeiLevenkov指出后者)

票数 3
EN

Stack Overflow用户

发布于 2019-02-24 16:45:48

其他的答案是足够的,并解释这个问题,尽管您可能希望使用串内插double.TryParse来验证输入并对失败提供反馈。

串内插

$特殊字符将字符串文字标识为内插字符串。内插字符串是可能包含内插表达式的字符串文字。当内插字符串被解析为结果字符串时,带有内插表达式的项将被表达式结果的字符串表示所替换。此特性可在C# 6和更高版本的语言中使用。

Double.TryParse法

将数字的字符串表示形式转换为等效的双精度浮点数.返回值指示转换是否成功。

示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// valid operators
var ops = new[] { "+", "-", "/", "*" };

double num1;
Console.Write("Enter a Number: ");
while (!double.TryParse(Console.ReadLine(), out num1))
   Console.Write("Invalid number, try again");

string op;
Console.Write($"Enter operator (\"+\", \"-\", \"/\", \"*\"): ");
while (!ops.Contains(op = Console.ReadLine()))
   Console.Write("Invalid operator, try again");

double num2;
Console.Write("Enter a Number: ");
while (!double.TryParse(Console.ReadLine(), out num2))
   Console.Write("Invalid number, try again");

// local function to do stuff
double ApplyOperator()
{
   switch (op)
   {
      case "+": return num1 + num2;
      case "-": return num1 - num2;
      case "/": return num1 / num2;
      case "*": return num1 * num2;
      default: throw new InvalidOperationException();
   }
}

// an interpolated string
Console.WriteLine($"{num1} {op} {num2} = {ApplyOperator()}");

Console.ReadLine();

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Enter a Number: 1
Enter operator ("+", "-", "/", "*"): +
Enter a Number: 2
1 + 2 = 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54857924

复制
相关文章
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/06/26
3540
何时使用Kafka而不是RabbitMQ
何时使用MongoDB而不是MySql
MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统。MySQL 是一个关系数据库系统,以结构化表格格式存储数据。相比之下,MongoDB 以更灵活的格式将数据存储为 JSON 文档。两者都提供性能和可扩展性,但它们为不同的应用场景提供了更好的性能。
wayn
2023/08/09
1K0
何时使用MongoDB而不是MySql
Laravel中如何添加新字段,如何指定在某个字段后而不是添加在最后
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112554.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
1.1K0
Laravel中如何添加新字段,如何指定在某个字段后而不是添加在最后
双倍的分辨率,双倍的快乐
这个工具名为waifu2x,已经开源在GitHub上了,而且随着开源,基于waifu2x的第三方软件也逐渐多了起来,现在已经开发成了普通人也可以使用的软件了。waifu2x的主要功能就是处理动漫风格的图片使之分辨率和清晰度在一定程度上提高,最大提高两倍,因而为2x。
分享者
2022/05/17
3760
双倍的分辨率,双倍的快乐
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景
wayn
2023/08/28
3020
何时使用Elasticsearch而不是MySql
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景。本文将从以下几个方面对它们进行比较和分析:
wayn
2023/08/09
6900
何时使用Elasticsearch而不是MySql
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/08/28
2580
何时使用Kafka而不是RabbitMQ
做产品经理而不是功能经理
产品经理是个很奇怪的岗位,好像大多数人都能做,因为每个人对某个产品都有自己的看法,都能提出一些意见和想法,甚至能设计实现原理;也好像大多数人都做不好产品经理,因为互联网上成千上万个产品,大部分是垃圾,
用户1756920
2018/06/20
1.1K0
WideNet:让网络更宽而不是更深
这是新加坡国立大学在2022 aaai发布的一篇论文。WideNet是一种参数有效的框架,它的方向是更宽而不是更深。通过混合专家(MoE)代替前馈网络(FFN),使模型沿宽度缩放。使用单独LN用于转换各种语义表示,而不是共享权重。
deephub
2023/08/30
2180
WideNet:让网络更宽而不是更深
android推荐使用dialogFrament而不是alertDialog
DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。 在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。 2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且Dia
xiangzhihong
2018/01/29
2.4K0
android推荐使用dialogFrament而不是alertDialog
云原生关乎文化,而不是容器
本文译自 Cloud-Native Is about Culture, Not Containers[1],文章洋洋洒洒上万字,作者总结了她见过的云原生失败的各种经验教训,还用生动的示例说明了什么不是云原生。译者是在周末闲暇时间仓促间翻译的,其中难免有不当之处,请读者指正。译者:宋净超(Jimmy Song)
xcbeyond
2021/04/02
5040
Spring Boot 容器选择 Undertow 而不是 Tomcat
Spring Boot内嵌容器支持Tomcat、Jetty、Undertow。为什么选择Undertow?
lyb-geek
2022/03/09
1.9K0
a标签点击后下载图片而不是打开
如果遇到图片等格式是会直接打开,如果我们需要这种也维持下载的话,加个download属性即可
阿超
2022/08/16
2.1K0
使用HSB而不是RGB来定义颜色
有多种方法可以在代码中定义颜色。最常用的方法是指定三种基色的值 - 红色、绿色和蓝色 (RGB)。本文通过指定色调、饱和度和亮度 (HSB) 的值来探索替代机制的使用。可以以更直观的方式使用 HSB 属性来创建颜色搭配良好的调色板。
韦弦zhy
2023/01/06
2.7K0
使用HSB而不是RGB来定义颜色
重要的是图表思维,而不是工具
很久没有作图了,主要是一时找不到应该练手的案例。 然后昨天逛网易数独栏目的数据新闻,看到一幅还不错的案例,对于我来说值得一试,然后就手痒给照葫芦画瓢弄出来了。(主要是其中涉及到的细节处理很麻烦) 当然过程是花了些时间的,主要是需要慢慢打磨其中的细节,需要利用很多技术来处理图形版面的交接位置。 令我感触最深的是,想要用ggplot2随心所欲的画图,ggplot2掌握的再熟练,也只是勉强过的了技术关,而图表背后的思维和结构更考验人,更具有挑战性。 好在我学习R语言之前,就已经利用Excel临摹了大量的高难度信息
数据小磨坊
2018/04/11
9130
重要的是图表思维,而不是工具
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree
链表和数组相比,数组可以通过下标快速定位,或者通过二分查找,查询复杂度为O(logn),而链表只能按照顺序挨个查找,复杂度为O(n)。
大忽悠爱学习
2023/03/23
2.4K0
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree
[UWP]CompositionLinearGradientBrush加BlendEffect,双倍的快乐
上一篇文章介绍了CompositionLinearGradientBrush的基本用法, 这篇文章再结合BlendEffec介绍一些更复杂的玩法。
dino.c
2019/10/29
4810
[UWP]CompositionLinearGradientBrush加BlendEffect,双倍的快乐
JDBC为什么要使用PreparedStatement而不是Statement
前言 这篇博客不是我写的,是由刘志军大大翻译的,真心觉得很棒,而且是必学要掌握的东西,所以就转载过来了,我个人的第一篇转载文章。 开始 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时Prepar
roobtyan
2018/06/04
1.4K0
为什么特征工程要用 SQL 而不是 Python
我们常说机器学习是一门实验科学。所以相比较传统工程而言,机器学习分成两个大的阶段:
用户2936994
2022/05/18
8230
为什么特征工程要用 SQL 而不是 Python
需要学习的是编程,而不是编程语言
我们不仅是程序员,而且是个(与时俱进的)学习者。鲜见的是有多少人认为他们是在学习编程的呢。原翻译传送门is here
Jimmy_is_jimmy
2023/05/24
4610

相似问题

方法返回双倍而不是整数

32

atof()返回浮动而不是双倍

17

添加到数组列表,而不是求和

22

求和而不是连接

20

(Haskell)师导致整数而不是双倍

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文