错误信息:')'expect'and“not a statement”';'expect

时间:2011-06-29 11:13:50

标签: java compiler-errors

我对编程完全不熟悉。我正在阅读互联网上的一些教程,还有Barry Burds“Java for dummies”,同时尝试学习Java编程。我已经尝试了所有可以想到但没有成功的变化。 在一个练习中,我应该制作以下程序在“messageDialogBox”中打印一条消息,该消息应该包含程序用户写入的数字。不幸的是,我在尝试编译时收到以下错误消息:有人可以帮助我让代码工作吗?代码有什么问题?

5 errors
Addition2.java:24: ')' expected
      JOptionPane.showMessageDialog( null, firstnumber "+" secondnumber
                                                      ^
Addition2.java:25: not a statement
      + sum, "Results", JOptionPane.PLAIN_MESSAGE );
      ^
Addition2.java:25: ';' expected
      + sum, "Results", JOptionPane.PLAIN_MESSAGE );
           ^
Addition2.java:25: not a statement
      + sum, "Results", JOptionPane.PLAIN_MESSAGE );
                                   ^
Addition2.java:25: ';' expected
      + sum, "Results", JOptionPane.PLAIN_MESSAGE );

代码如下:

import javax.swing.JOptionPane;

public class Addition2
{
   public static void main( String args[] )
   {
      String firstnumberstring;
      String secondnumberstring;

      int firstnumber;
      int secondnumber;
      int sum;

      firstnumberstring = JOptionPane.showInputDialog( 
            "Write first number" );
      secondnumberstring =
         JOptionPane.showInputDialog( "Write second number" );

      firstnumber = Integer.parseInt( firstnumberstring );
      secondnumber = Integer.parseInt( secondnumberstring );

      sum = firstnumber + secondnumber;

      JOptionPane.showMessageDialog( null, firstnumber "+" secondnumber
      + sum, "Results", JOptionPane.PLAIN_MESSAGE );
   } 
}

3 个答案:

答案 0 :(得分:3)

假设showMessageDialog旨在显示添加的结果,此行

JOptionPane.showMessageDialog(null, firstnumber "+" secondnumber
      + sum, "Results", JOptionPane.PLAIN_MESSAGE);

应该读取类似

的内容
JOptionPane.showMessageDialog(null, firstnumber + "+" + secondnumber + "=" +
                                                ^     ^              ^^^^^^^

      + sum, "Results", JOptionPane.PLAIN_MESSAGE);

(只是将字符串和数字放在一起并不会将它们连接起来。你必须在它们之间插入+!)

另请注意,5 + 3 + " hello"会产生"8 hello"。要生成53 hello,您必须执行"" + 5 + 3 + " hello"


你也可以使用例如String.format,在这种情况下代码看起来像

String msg = String.format("%d + %d = %d", firstnumber, secondnumber, sum);
JOptionPane.showMessageDialog(null, msg, "Results", JOptionPane.PLAIN_MESSAGE);

答案 1 :(得分:2)

这是问题所在:

firstnumber "+" secondnumber

目前尚不清楚你的意思。你真的想要一个算术总和吗?如果是这样,您不应该在+运算符周围加上引号:

JOptionPane.showMessageDialog(null, firstnumber + secondnumber + sum,
    "Results", JOptionPane.PLAIN_MESSAGE );

如果实际意味着使用字符串连接并在字符串中包含“+”,则需要使用以下内容:

JOptionPane.showMessageDialog(null, firstnumber + "+" + secondnumber + "=" + sum,
    "Results", JOptionPane.PLAIN_MESSAGE );

看起来有点像这样:

+ "+" +

这里的第一个和第三个+符号是字符串连接运算符。中间的一个是字符串文字。

答案 2 :(得分:0)

您需要使用字符串cat运算符连接字符串:+

JOptionPane.showMessageDialog( null, firstnumber  + "+" + secondnumber + " = " + sum, "Results", JOptionPane.PLAIN_MESSAGE );

顺便说一句;声明第一次分配变量的变量被认为是一件好事 - 而不是坚持旧的c-要求(具有古老的根),所有变量必须在实际代码之前声明。

String firstnumberstring = JOptionPane.showInputDialog( 
        "Write first number" );

在尝试找出变量的使用位置时,它会有所帮助。 当变量仅在特定范围内使用时,这是特别好的; (在大括号内)