2011-10-12 2 views
1

계속"연산자 ==는 인수 유형에 대해 정의되지 않았습니다 (s 3 행에서이 코드 비트에서) 부울, INT " :계속 "연산자 ==는 인수 유형"부울, int "에 대해 정의되지 않았으며이를 수정하는 방법을 모릅니다.

public void loadState(int i) 
    { 
     if (statesSaved[i] == 0) 
     { 
     return; 
     } 
     List list = TMIUtils.getMinecraft().h.at.e; 
     for (int j = 0; j < 44; j++) 
     { 
      sx slot = (sx)list.get(j + 1); 
      slot.c(null); 
      ul itemstack = TMIUtils.copyStack(states[i][j]); 
      if ((itemstack == null) || (itemstack.c < 0) || (itemstack.c >= sv.f.length) || (sv.f[itemstack.c] == null)) 
      continue; 
      slot.c(itemstack); 
    } 
    } 

나는 내가 오류가없는 같은 일 또 다른 클래스 파일이 있기 때문에이, 왜 일어나는지 모른다. 도움이된다면 여기

내 전체 클래스 파일입니다

오류 메시지 상태로
import java.io.PrintStream; 
import java.util.ArrayList; 
import java.util.HashSet; 
import java.util.LinkedHashMap; 
import java.util.List; 
import java.util.Map; 
import net.minecraft.client.Minecraft; 

public class TMIConfig 
{ 
    public static final String VERSION = "1.7.2 2011-07-01"; 
    public static final int NUM_SAVES = 7; 
    public static final int INVENTORY_SulE = 44; 
    public static boolean isModloaderEnabled = false; 
    private static TMIConfig instance; 
    private static List items = new ArrayList(); 
    private static HashSet toolIds; 
    private static HashSet nonUnlimitedIds; 
    private Map settings; 
    private static ul[][] states = new ul[7][44]; 
    private static boolean[] statesSaved = new boolean[7]; 
    private static HashSet excludeIds; 

    public TMIConfig() 
    { 
    this.settings = new LinkedHashMap(); 
    this.settings.put("enable", "true"); 
    this.settings.put("enablemp", "false"); 
    this.settings.put("give-command", "/give {0} {1} {2}"); 
    for (int i = 0; i < getNumSaves(); i++) 
    { 
     this.settings.put(new StringBuilder().append("save-name").append(i + 1).toString(), new StringBuilder().append("").append(i + 1).toString()); 
    } 

    for (int j = 0; j < getNumSaves(); j++) 
    { 
     this.settings.put(new StringBuilder().append("save").append(j + 1).toString(), ""); 
    } 

    instance = this; 
    } 

    public static boolean isMultiplayer() 
    { 
    return TMIUtils.getMinecraft().f.I; 
    } 

    public static TMIConfig getInstance() 
    { 
    if (instance == null) 
    { 
     new TMIConfig(); 
    } 
    return instance; 
    } 

    public Map getSettings() 
    { 
    return this.settings; 
    } 

    public List getItems() 
    { 
    return items; 
    } 

    public int getNumSaves() 
    { 
    return 7; 
    } 

    public boolean isStateSaved(int i) 
    { 
    return statesSaved[i]; 
    } 

    public ul[] getState(int i) 
    { 
    return states[i]; 
    } 

    public boolean getBooleanSetting(String s) 
    { 
    return Boolean.parseBoolean((String)this.settings.get(s)); 
    } 

    public boolean isEnabled() 
    { 
    return ((isMultiplayer()) && (getBooleanSetting("enablemp"))) || ((!isMultiplayer()) && (getBooleanSetting("enable"))); 
    } 

    public void toggleEnabled() 
    { 
    String s = isMultiplayer() ? "enablemp" : "enable"; 
    this.settings.put(s, Boolean.toString(!getBooleanSetting(s))); 
    } 

    public void setEnabled(boolean flag) 
    { 
    String s = isMultiplayer() ? "enablemp" : "enable"; 
    this.settings.put(s, Boolean.toString(flag)); 
    } 

    public static boolean isItemIncluded(int i) 
    { 
    return !excludeIds.contains(Integer.valueOf(i)); 
    } 

    public static boolean isTool(sv item) 
    { 
    return toolIds.contains(Integer.valueOf(item.br)); 
    } 

    public static boolean canItemBeUnlimited(sv item) 
    { 
    return !nonUnlimitedIds.contains(Integer.valueOf(item.br)); 
    } 

    public boolean areDamageVariantsShown() 
    { 
    if (isMultiplayer()) 
    { 
     String s = (String)getSettings().get("give-command"); 
     return s.contains("{3}"); 
    } 

    return true; 
    } 

    public void clearState(int i) 
    { 
    for (int j = 0; j < 44; j++) 
    { 
     states[i][j] = null; 
     statesSaved[i] = false; 
    } 

    this.settings.put(new StringBuilder().append("save").append(i + 1).toString(), ""); 
    } 

    public void loadState(int i) 
    { 
     if (statesSaved[i] == 0) 
     { 
     return; 
     } 
     List list = TMIUtils.getMinecraft().h.at.e; 
     for (int j = 0; j < 44; j++) 
     { 
      sx slot = (sx)list.get(j + 1); 
      slot.c(null); 
      ul itemstack = TMIUtils.copyStack(states[i][j]); 
      if ((itemstack == null) || (itemstack.c < 0) || (itemstack.c >= sv.f.length) || (sv.f[itemstack.c] == null)) 
      continue; 
      slot.c(itemstack); 
    } 
    } 

    public void saveState(int i) 
    { 
    List list = TMIUtils.getMinecraft().h.at.e; 
    for (int j = 0; j < 44; j++) 
    { 
     states[i][j] = TMIUtils.copyStack(((sx)list.get(j + 1)).a()); 
    } 

    this.settings.put(new StringBuilder().append("save").append(i + 1).toString(), encodeState(i)); 
    statesSaved[i] = true; 
    } 

    public String encodeState(int i) 
    { 
    StringBuilder stringbuilder = new StringBuilder(); 
    for (int j = 0; j < 44; j++) 
    { 
     if (states[i][j] != null) 
     { 
     stringbuilder.append(states[i][j].c); 
     stringbuilder.append(":"); 
     stringbuilder.append(states[i][j].a); 
     stringbuilder.append(":"); 
     stringbuilder.append(states[i][j].i()); 
     } 
     stringbuilder.append(","); 
    } 

    return stringbuilder.toString(); 
    } 

    public void decodeState(int i, String s) 
    { 
    if (s.trim().equals("")) 
    { 
     statesSaved[i] = false; 
    } 
    else { 
     String[] as = s.split(",", 0); 
     for (int j = 0; (j < as.length) && (j < states[i].length); j++) 
     { 
     String[] as1 = as[j].split(":"); 
     if (as1.length != 3) 
     { 
      continue; 
     } 
     try 
     { 
      states[i][j] = new ul(Integer.parseInt(as1[0]), Integer.parseInt(as1[1]), Integer.parseInt(as1[2])); 
     } 
     catch (Exception exception) 
     { 
      System.out.println(exception); 
     } 
     } 

     statesSaved[i] = true; 
    } 
    } 

    static 
    { 
    toolIds = new HashSet(); 
    for (int i = 1; i <= 3; i++) 
    { 
     toolIds.add(Integer.valueOf(i + 256)); 
    } 

    for (int j = 11; j <= 23; j++) 
    { 
     toolIds.add(Integer.valueOf(j + 256)); 
    } 

    for (int k = 27; k <= 30; k++) 
    { 
     toolIds.add(Integer.valueOf(k + 256)); 
    } 

    for (int l = 34; l <= 38; l++) 
    { 
    toolIds.add(Integer.valueOf(l + 256)); 
    } 

    for (int m = 42; m <= 61; m++) 
    { 
    toolIds.add(Integer.valueOf(m + 256)); 
    } 

    toolIds.add(Integer.valueOf(359)); 
    toolIds.add(Integer.valueOf(346)); 

    nonUnlimitedIds = new HashSet(); 
    nonUnlimitedIds.add(Integer.valueOf(358)); 
    excludeIds = new HashSet(); 
    excludeIds.add(Integer.valueOf(9)); 
    excludeIds.add(Integer.valueOf(11)); 
    excludeIds.add(Integer.valueOf(63)); 
    excludeIds.add(Integer.valueOf(64)); 
    excludeIds.add(Integer.valueOf(68)); 
    excludeIds.add(Integer.valueOf(71)); 
    excludeIds.add(Integer.valueOf(74)); 
    excludeIds.add(Integer.valueOf(75)); 
    excludeIds.add(Integer.valueOf(59)); 
    excludeIds.add(Integer.valueOf(83)); 
    excludeIds.add(Integer.valueOf(55)); 
    excludeIds.add(Integer.valueOf(26)); 
    excludeIds.add(Integer.valueOf(93)); 
    excludeIds.add(Integer.valueOf(94)); 
    try 
    { 
     Class.forName("mod_RedPowerWiring"); 
     excludeIds.add((Integer)ModLoader.getPrivateValue(mod_RedPowerWiring.class, null, "InsWireID")); 
     excludeIds.add((Integer)ModLoader.getPrivateValue(mod_RedPowerWiring.class, null, "CableID")); 
    } 
    catch (Exception exception) 
    { 
    } 
    } 
} 

답변

4

는, 코드가 이해되지 않는다; if (boolean == int)을 쓸 수 없습니다.

당신은 아마 특정 상황에서 서로 다른 유형으로 변수를 치료 위도의 큰 거래를 할 수 있습니다 C는 달리, 좀 더 엄격한 당신이 할 수있는 무슨에, 자바

+0

감사합니다. –

+1

@BernhardZwahlen 중첩 된 무한 비교 체인에 대해 'if (! statesSaved [i])' – fireshadow52

8

if (statesSaved[i] == false)을 의미했다. 당신이 개 문제 라인은 다음과 같습니다

if (!statesSaved[i]) 

그리고, 당신은 당신의 코드를 유지하는 사람들의 정신을 소중히하는 경우, 사용하지 마십시오 :

private static boolean[] statesSaved = new boolean[7]; 
if (statesSaved[i] == 0) 

당신은 같은 마지막 하나를 코딩 할 필요가 같은 일이 :

if (statesSaved[i] == false) 

명시 적으로 부울을 비교 할 필요가 없을 안됩니다. 대신 hasSavedState 또는 isBroken 같은 지능적인 이름을 선택해야합니다 그래서 같은 표현 :

if (isBroken) 

또는 영어에

while (!finished) 

메이크업 감각. 이렇게하면 코드의 가독성이 크게 향상됩니다.

어떤 경우이든, 부울 값을 명시 적으로 비교하면 또 다른 부울이 반환되므로 어디서 멈출까요? reductio ad absurdum의 오랜 전통은 다음과 같은 코드를 필요로합니다.

+2

+1을 수행 할 수도 있습니다. – andronikus