需要有关编译错误的帮助

时间:2014-02-15 23:50:09

标签: java compilation compiler-errors

import java.util.Scanner;

public class EnemyMessage {

    public static void main(String[] args) {
        System.out.println("enter the code:");
        Scanner keyboard = new Scanner(System.in);
        int key;
        int i;
        String code = keyboard.next();
        for (key = 1; key <= 100; key++) {
            for (i = 0; i < code.length(); i--) {
                char c = code.charAt(i);
                int n = (int) c;
                System.out.println(n);
                {
                    (char) c = (int) c - 32 + key + 127;
                    System.out.println(c);
                }
            }

        }
    }
}

这段代码给了我两个对我来说没什么意义的错误。据我所知,我之前没做过任何不同的事情。

错误:

  1. 错误的构造函数
  2. {“期待

4 个答案:

答案 0 :(得分:2)

import java.util.Scanner;
public class EnemyMessage
{

    public static void main (String[] args)
    {
        System.out.println("enter the code:");
        Scanner keyboard = new Scanner (System.in);
        int key;
        int i;
        String code = keyboard.next();
        for (key = 1; key<=100; key++)
        {
        for ( i = 0; i < code.length(); i--)
        {
            char c = code.charAt(i);
            int n = (int)c;
            System.out.println(n);
            { 
            c = (char)(c - 32 + key + 127);
            System.out.println(c);
            }
        }

    }
   }
}

2)“{”被驱逐意味着你错过了一个{

1)错误的构造函数是由于你没有{

而引起的

答案 1 :(得分:0)

有趣的是,我没有看到任何代码错误(或者当我使用IntelliJ格式化时没有看到),除了这一行:

(char) c = (int) c - 32 + key + 127;

您正在将要存储的内容投放到charint。那是行不通的。

修复你的演员表以包括你想要演员的整个范围。由于charc,所以<{1}}的强制转换是多余的。

char

答案 2 :(得分:0)

问题是由此引起的:

    {
        (char) c = (int) c - 32 + key + 127;
        System.out.println(c);
    }

(char) c = ...;语法完全无效。

作业应该看起来像c = ...;

如果您希望/需要在分配之前进行类型转换,则类型转换属于赋值运算符的右侧;即c = (char)(...)


无论如何,你所写的内容会导致Java解析器(在你的IDE中)彻底混淆......并且引人注目误认为错误是企图声明构造函数,它是错误的上下文

不幸的是,这有时会发生......尽管它依赖于编译器。编译器试图提供帮助,但编译器/编译器编写者“猜错了”你当时想要写的内容。

然后,似乎编译器的语法恢复已在其符号流中插入{符号以尝试修复问题。第二个错误提示没有}与其插入的幻像{相匹配。再次,它猜错了。

但其根本原因是您的原始语法错误。


对于记录,原始表达式中的int强制转换不是必需的。你可以(和IMO应该)按照以下方式编写作业:

c = (char) (c - 32 + key + 127);
在Java中,

说明:,算术运算符总是在执行操作之前将其操作数提升为int(或long),结果为{{1} }(或int)。这意味着,无论如何,您longc的明确演员都会发生。

答案 3 :(得分:-1)

更改linke     (char)c =(int)c -32 + key + 127; 至     c =(char)((int)c - 32 + key + 127);