2014-02-15 52 views
-1
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. {”预计
+0

添加java的语言标签,以便其他人可以一目了然地知道您正在使用哪种语言。 – jpaugh

+0

另外,我们无法看到的错误对我们毫无意义。如果你想得到一个体面的答案,你将不得不复制粘贴它们。 – jpaugh

+1

@ExcelledProducts - 那可能>>是<<整个代码。 –

回答

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) “{” expeceted意味着你缺少一个{

1)错位的构造函数造成的,因为你没有{

0

有趣的是,我没有看到任何代码中的错误(或者我没有当我的IntelliJ格式),除了这条线:

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

你铸造你想存储的东西在char到一个int。这是行不通的。

修复您的演员阵容,使其包含您想演员阵容的整个范围。由于cchar,所以投到char是多余的。

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

更改林克 (炭)C =(INT)C -32 +键+ 127; 至 c =(char)((int)c-32 + key + 127);

+1

我不认为在这种情况下这样的铸造级联是一个好主意。 – Zegar

+0

@Zegar - 这是没有必要的。看到我的回答结束。 –

0

的问题由此造成:

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

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

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

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


无论如何,你所写的内容具有导致Java解析器(在你的IDE),以获得彻底糊涂了......和壮观误诊的错误是试图声明一个构造函数,它错误的上下文。

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

然后,似乎编译器的语法恢复已在其符号流中插入{符号以试图解决问题。第二个错误提示没有}与它插入的虚拟{匹配。再一次,它猜测错了。

但是,这是你的原始语法错误的根本原因。


对于该记录,int铸造您的原始表达式是没有必要的。您可以(和国际海事组织应)写的分配,因为这:

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

说明:在Java中,算术运算符始终执行操作前宣传自己的操作数int(或long),并将结果是int(或long)。这意味着你的明确演员cint无论如何都会发生。