public class Pagamento {
public static void main(String[] args) {
int vvalor;
int vpagto;
int vtroco;
String voperador;
vvalor = 200;
vpagto = 250;
voperador = -;
if (vpagto > vvalor){
System.out.println ("Troco:" + vpagto - vvalor);
}if (vpagto = vvalor ){
System.out.println ("Troco:" + 0);
}if (vpagto < vvalor){
System.out.println ("Transação inconcluída!");
}
}
}
我必须定义&#34; - &#34; &#39;因为它要求(当我这样做时,它在第一个System.out.println中说,运算符 - 未定义参数类型String,int和行&# 39;&#34;} if(vpagto = vvalor){&#34;它出现了错误&#34;无法从int转换为boolean),当我确实定义时,它只是给出了这个错误线&#34; voperador = - ;&#34;: 令牌上的语法错误&#34; - &#34;,此令牌后预期的表达式。那是什么意思 ?一切都错了吗?我该怎么做才能解决这个问题?请帮助我,我尝试搜索,但我发现这里没有这样的,没有什么可以解决我的问题...谢谢,请帮助!
答案 0 :(得分:4)
它应该是voperador = "-";
你错过了双引号。字符串必须包含在双qoutes
答案 1 :(得分:2)
替换}if (vpagto = vvalor ){
与}if (vpagto ==vvalor ){
同时将-
保留在&#34;&#34;(double qoutes)中,例如voperador ="-";
答案 2 :(得分:0)
voperador是一个String,无法分配给 - 。如果您希望字符串为“ - ”,请使用voperador =“ - ”;
答案 3 :(得分:0)
对于您的第一个错误:此行无效:
voperador = -;
字符串常量必须用引号:
voperador = "-";
-
本身是一元否定运算符(例如-a
)或二元减法运算符(例如a - b
)。您看到的错误是编译器变得非常困惑的结果,为什么否定/减法运算符只是在等号和分号之间悬空。
对于你的第二个错误:你有这个:
if (vpagto = vvalor )
但你应该这样:
if (vpagto == vvalor )
在Java中,单个=
表示“赋值”。使用双==
进行比较。您看到错误的原因是因为Java在赋值后(即规则)将表达式a = b
计算为a
的值,在这种情况下恰好是{{1}类型(因为int
是vpagto
)。同时,它希望int
语句中的条件为if
(例如boolean
)。编译器很困惑,因为它需要一个if (true) ...
,但你给它一个boolean
。
对于你的第三个错误,你有这个:
int
但你真正的意思是:
("Troco:" + vpagto - vvalor)
Java从左到右评估表达式。为方便起见,它允许您将任何想要的内容添加到字符串中,结果是您指定的值的字符串版本。但是,这仅适用于("Troco:" + (vpagto - vvalor))
,对于字符串没有+
的特殊定义。由于它从左到右,因此首先评估-
,这是一个字符串。但是你试着从字符串中减去"Troco:" + vpagto
,编译器会抱怨。通过添加括号,在尝试将结果附加到字符串之前,告诉它首先对整数执行数学运算。
您在这里犯的错误非常基本。你应该通过正式的Language Basics教程。