You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言计算器开发:if条件语句报错问题排查

问题描述

我想要开发一款可接收用户操作选择的计算器,在测试用户选择后的条件判断逻辑时,发现if-else语句出现报错。以下是我的代码及报错信息,请问报错原因是什么?if和else语句存在什么问题?

我的代码

Adicao = "Adição"
Subtracao = "Subtração"
Multiplicacao = "Multiplicação"
Divisao = "Divisão"

print("Choice of operations:")
cat("1.", Adicao)
cat("2.", Subtracao)
cat("3.", Multiplicacao)
cat("4.", Divisao)

escolha <- as.integer(readline(prompt="Enter your choice: "))

if(escolha = 1){
  print("Cool! You choose addition")
} else {
  print("You didnt choose addition ")
}

报错信息

> escolha <- as.integer(readline(prompt="Enter your choice: "))
Enter your choice: 2
> if(escolha = 1){
Error: unexpected '=' in "if(escolha ="
>   print("Cool! You choose addition")
[1] "Cool! You choose addition"
> } else {
Error: unexpected '}' in "}"
>   print("You didnt choose addition ")
[1] "You didnt choose addition "
> }
Error: unexpected '}' in "}"

问题分析与解决

1. 条件判断符号使用错误

R语言中,赋值操作使用=或<-,相等比较必须用==。你在if条件里写了escolha = 1,这是赋值语句,不是判断escolha是否等于1的逻辑,R解释器无法识别这种语法,直接抛出unexpected '='错误。

2. 连锁语法错误

因为第一个错误导致if语句的语法结构直接断裂,后续的}和else失去了正确的上下文,所以接连出现unexpected '}'报错。

修正后的代码

Adicao = "Adição"
Subtracao = "Subtração"
Multiplicacao = "Multiplicação"
Divisao = "Divisão"

print("Choice of operations:")
cat("1.", Adicao, "\n")  # 增加换行符优化输出格式
cat("2.", Subtracao, "\n")
cat("3.", Multiplicacao, "\n")
cat("4.", Divisao, "\n")

escolha <- as.integer(readline(prompt="Enter your choice: "))

if(escolha == 1){  # 将赋值符号=替换为比较符号==
  print("Cool! You choose addition")
} else {
  print("You didnt choose addition ")
}

补充说明:你的代码中else与前一个}在同一行的写法是符合R语法要求的,如果将else单独换行写会触发新的语法错误,这部分你没有问题。


内容的提问来源于stack exchange,提问作者gabrielleAmbrosio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:33:35