2014-02-15 5 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. 는 {당신이 {

    1) 잘못된 생성자가 누락 expeceted { "의미"

+0

자바의 언어 태그를 추가하면 다른 사람들이 사용중인 언어를 한 눈에 알 수 있습니다. – 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) 예상 " {

0
내가 어떤 코드 오류가 표시되지 않습니다, 흥미롭게도

(또는 내가 IntelliJ를 사용하여 서식 때 나는하지 않았다)이 라인을 제외 :

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

당신은에 char에 저장하려는 뭔가를 캐스팅하고 int. 그것은 단지 작동하지 않을 것입니다.

캐스트하려는 내용의 전체 범위를 포함하도록 캐스트를 수정하십시오. char에 대한 캐스트는 cchar이기 때문에 중복됩니다.

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

변경 LINKE (숯), C = (int)를 -32 + C + 키 (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)(...)입니다.


어쨌든, 당신이 쓴 것은 (당신의 IDE)에서 자바 파서가 철저하게 혼란스러워하는 원인이 ... 그리고 은 화려 생성자, 그것은 잘못된 컨텍스트를 선언하기위한 시도로 오류를 오진.

불행하게도 이것은 때때로 발생합니다 ... 컴파일러에 따라 다르지만. 컴파일러는 도움이되기 위해 노력했지만 컴파일러/컴파일러 작성자는 그 시점에서 작성하려고했던 내용에 대해 "잘못 생각했습니다".

그런 다음 컴파일러의 구문 복구가 수정하려고 시도 할 때 심볼 스트림에 { 심볼을 삽입 한 것처럼 보입니다. 두 번째 오류는 삽입 된 팬텀 {과 일치하는 }이 없다고 불평합니다. 다시 말하지만, 그것은 잘못 추측했습니다.

근본 원인은 원래 구문 오류입니다.


레코드의 경우 원래 표현식의 int은 필요하지 않습니다.

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

설명 : 자바에서, 산술 연산자는 항상 작업을 수행하기 전에 int (또는 long)에 피연산자를 촉진하고, 그 결과 당신은 이 같은 할당을 쓰기 (및 IMO는해야한다) 할 수 int (또는 long)입니다. 즉, c에서 int으로 명시 적으로 캐스트가 발생합니다.

관련 문제