Java:令牌上的语法错误" - ",此令牌后预期的表达式

时间:2014-04-01 04:33:50

标签: java

好吧,大家好,我现在正在开始程序员的生活,我真的很喜欢它,但我真的非常努力,而且我正在制作一些简单的程序在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!");
            }

    }

}

我必须定义&#34; - &#34; &#39;因为它要求(当我这样做时,它在第一个System.out.println中说,运算符 - 未定义参数类型String,int和行&# 39;&#34;} if(vpagto = vvalor){&#34;它出现了错误&#34;无法从int转换为boolean),当我确实定义时,它只是给出了这个错误线&#34; voperador = - ;&#34;: 令牌上的语法错误&#34; - &#34;,此令牌后预期的表达式。那是什么意思 ?一切都错了吗?我该怎么做才能解决这个问题?请帮助我,我尝试搜索,但我发现这里没有这样的,没有什么可以解决我的问题...谢谢,请帮助!

4 个答案:

答案 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}类型(因为intvpagto)。同时,它希望int语句中的条件为if(例如boolean)。编译器很困惑,因为它需要一个if (true) ...,但你给它一个boolean


对于你的第三个错误,你有这个:

int

但你真正的意思是:

("Troco:" + vpagto - vvalor)

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


您在这里犯的错误非常基本。你应该通过正式的Language Basics教程。