Java:标记“上的语法错误”-&引用;,此标记后需要一个表达式

Java:标记“上的语法错误”-&引用;,此标记后需要一个表达式,java,Java,大家好,我现在开始了程序员的生活,我对它非常陌生,但我非常非常努力地尝试,我正在制作一些简单的程序在eclipse控制台上运行,非常简单,因为我才刚刚开始。。。好吧,一切都进行得很顺利,除了这一个程序,我无法让它以任何方式工作。。。我会把这些都放在这里,所以如果有什么真的,真的错了,告诉我,我还将体验一下eclipse发现的问题。。。这是: public class Pagamento { public static void main(String[] args) {

大家好,我现在开始了程序员的生活,我对它非常陌生,但我非常非常努力地尝试,我正在制作一些简单的程序在eclipse控制台上运行,非常简单,因为我才刚刚开始。。。好吧,一切都进行得很顺利,除了这一个程序,我无法让它以任何方式工作。。。我会把这些都放在这里,所以如果有什么真的,真的错了,告诉我,我还将体验一下eclipse发现的问题。。。这是:

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!");
            }

    }

}
公共类帕加门托{ 公共静态void main(字符串[]args){ int vvalor; int-vpagto; 瓦特罗科国际酒店; 弦式voperador; vvalor=200; vpagto=250; voperador=-; 如果(vpagto>vvalor){ System.out.println(“Troco:+vpagto-vvalor); }如果(vpagto=vvalor){ System.out.println(“Troco:+0”); }if(vpagto 我必须定义“-”,因为它要求(当我这样做时,它在第一个System.out.println中说,“'运算符-对于参数类型字符串int和行中未定义'”}如果(vpagto=vvalor){“出现错误”无法从int转换为boolean),当我这样做时,它只是在行中给出了这个错误”voperador=-;“: 标记“-”上的语法错误,此标记后面应为表达式。这意味着什么?一切都错了吗?我应该怎么做才能修复它?请帮助我,我尝试搜索,但我在这里没有找到类似的内容,无法解决我的问题…谢谢,请帮助!

替换
}如果(vpagto=vvalor){
如果(vpagto==vvalor){


同样,将
-
保留在“”(双引号)中,如
voperador=“-”;

它应该是
voperador=“-”;
您缺少了双引号。字符串需要包含在双引号中voperador是一个字符串,不能分配给-。如果您希望字符串是“-”,请使用voperador=”-“;

对于第一个错误:此行无效:

voperador = -;
字符串常量必须加引号:

voperador = "-";
-
本身要么是一元求反运算符(例如
-A
)要么是二元减法运算符(例如
A-b
)。您看到的错误是编译器对为什么一个求反/减法运算符正好挂在等号和分号之间感到非常困惑


对于第二个错误:您有:

if (vpagto = vvalor )
if (vpagto == vvalor )
("Troco:" + vpagto - vvalor)
但你应该有这个:

if (vpagto = vvalor )
if (vpagto == vvalor )
("Troco:" + vpagto - vvalor)
在Java中,单个
=
表示“赋值”。比较是用双
=
来完成的。您看到看到错误的原因是Java在赋值后将表达式
a=b
计算为
a
的值(这是规则),在这种情况下,它恰好是
int
(因为
vpagto
是一个
int
)。同时,它期望
if
语句中的条件是一个
boolean
(例如
if(true).
)。编译器很困惑,因为它想要一个
boolean
,但您给了它一个
int


对于第三个错误,您有以下错误:

if (vpagto = vvalor )
if (vpagto == vvalor )
("Troco:" + vpagto - vvalor)
但你真正的意思是:

("Troco:" + (vpagto - vvalor))
Java从左到右计算表达式。为方便起见,它允许您向字符串添加几乎任何您想要的内容,并且结果是指定值的字符串版本。但是,这仅适用于
+
,对于字符串没有特殊的
-
定义。因为它是从左到右的,所以首先是
“Troco:”计算+vpagto
,这是一个字符串。但是,如果您尝试从字符串中减去
vvalor
,编译器会抱怨。通过添加括号,您会告诉它在尝试将结果附加到字符串之前,先对整数执行数学运算



您在这里犯的错误非常基本。您应该认真阅读官方教程。

非常感谢!我删除了字符串运算符,并执行了此操作,因为该行现在没有错误,仍然在“System.out.println”(“Troco:+vpagto-vvalor);“我有错误“'the operator-未定义参数类型String,int',如果我添加String vooperator,它只会发生与之前相同的错误…@user3483578尝试
System.out.println(“Troco:”+(vpagto-vvalor))
老兄,你是我的英雄!一切都很顺利!哈哈,谢谢!那真让我烦死了!我花了一整天的时间在这上面,你说得对,我上周在网上看到的,我怎么不记得了?你真是个了不起的人,谢谢!@user3483578阅读的时间比“一整天”要少"你花了很多时间在键盘上敲击你的头。如果你觉得这个答案最有帮助的话,你应该接受它。你可以点击答案左边的大复选标记来做到这一点。Thx伙计,完成了,我要为舒尔阅读它,研究它永远不会太多,我想我太热情了,跳过了一些部分哈哈,我想这会发生在每个人身上。。。再次感谢你,伙计!这里有一个奇怪的部分,如果我把它放在双引号中,错误'the operator-'对于参数类型字符串是未定义的,int'继续,如果我删除错误“Syntax error on token”-”,这个标记后面应该是表达式“,我不明白…你需要更改System.out.println(“Troco:+vpagto-vvalor)到System.out.println(“Troco:+(vpagto-vvalor));和if(vpagto=vvalor)到if(vpagto==vvalor)好吧,这里有一个奇怪的部分,如果我把它放在双引号中,错误“the operator-对于参数类型字符串是未定义的,int”继续,如果我删除,错误“Syntax error on token”-”,表达式应该在这个标记之后,我不明白…@user34835