Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > case expressions must be constant expressions


Автор: Griphon 8.10.2010, 15:04
Добрый день. Есть два класса

Код

public class First{
   public final static int x1=0,
   x2=1,
   x3=2;
}


и второй 
Код

public class Second{
  int value;
  void someMethod(){
 switch (value){
    case First.x1: инструкция; break;
    case First.x2: инструкция; break;
    case First.x3: инструкция; break; 
    default:System.out.println();break;
    }
 }
}



Появляется сообщение об ошибке, в строках "case":
case expressions must be constant expressions


Автор: Egik2 8.10.2010, 15:32
Почитай, как применяется case
http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

Автор: Griphon 8.10.2010, 15:40
Цитата

A switch works with the byte, short, char, and int primitive data types. 


Тема не раскрыта 

Автор: powerOn 8.10.2010, 15:52
у меня скомпилилось без ошибок. использовал source level 1.3 - 1.6

Автор: Griphon 8.10.2010, 16:17
Хм... , Речь идет о примере из книги Интернет программирование на Java, Вадима Будилова. Заинтересовала причина ошибки, в сети вразумительного ответа не нашел.

классы книг описанные в книге


первый
Код

public class Card {
public final static int SPADES=0,
HEARTS=1,
DIAMONDS=2,
CLUBS=3;
public final static int ACE=1,
JACK=11,
QUEEN=12,
KING=13;
private final int suit;
private final int value; 

public Card(int theSuit,int theValue){
    value=theValue;
    suit=theSuit;
}
public int getSuit(){
    return suit;
}
public int getValue(){
    return value;
}
public String getValueAsString(){
    switch (value){
    case 1: return "Ace";
    case 2: return "2";
    case 3:return "3";
    case 4: return "4";
    case 5: return "5";
    case 6: return "6";
    case 7: return "7";
    case 8: return "8";
    case 9: return "9";
    case 10: return "10";
    case 11: return "Jack";
    case 12 : return "Queen";
    case 13 :return "King";
    default: return "???";
    }
}
public String getSuitAsString(){
    switch (suit){
    case SPADES :return "Spades";
    case HEARTS: return "Hearts";
    case DIAMONDS :return "Diamonds";
    case CLUBS: return "Clubs";
    default:return "??";
    }
}
public String toString(){
    return getValueAsString()+"of"+getSuitAsString();
}

}



и второй
Код

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
public class Cards extends JApplet{

.............................
..........................
.......................

void drawCard(Graphics g,Card card,int x,int y){
        if (card==null){
             .......................
                     ......................
        }
        else{
            int row=0;
                        
            switch (card.getSuit()){
                 case card.CLUBS :row=0; break;
                  case card.HEARTS: row=1; break;
                  case card.SPADES: row=2; break;
                  case card.DIAMONDS: row=3; break;
            
            }
            int sx,sy;
            sx=40*(card.getValue()-1);
            sy=60*row;
            g.drawImage(cardImages, x, y, x+40, y+60, sx, sy, sx+40, sy+60, this);
        }
            
    }

}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)