2014-02-15 82 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無論如何都會發生。