Вы код, кажется, «демонстрация» код, но он не делает ничего существенного, кроме показывают, что вы, вероятно, нужны сначала сесть и узнать немного о обработке, прежде чем продолжить - ударяет обработку .org и пропустите некоторые из учебников. Это стоит того.
Код, который вы указали, может быть написан гораздо более разумно, но вместо этого я отвечу на вопрос; Обработка использует вариацию области видимости Явы: локальная переменная козыри переменной экземпляра объекта, который козыри глобальную переменную:
int x = 0;
int y = 50;
class Thing {
int y = 10;
Thing() {
// x is global, y is global and object instance
println("x (in Thing): "+x);
println("y (in Thing): "+y);
declareAndCheck();
}
void declareAndCheck() {
// now we make some local variables: they win.
int x = 40;
int y = 100;
println("x (local declared): "+x);
println("y (local declared): "+y);
}
}
void setup() {
println("x (global): "+x);
println("y (global): "+y);
Thing t = new Thing();
// and global is still global
println("x (global, again): "+x);
println("y (global, again): "+y);
}
Это будет генерировать следующий вывод:
x (global): 0
y (global): 50
x (in Thing): 0
y (in Thing): 10
x (local declared): 40
y (local declared): 100
x (global, again): 0
y (global, again): 50
Почему? Сначала мы видим следующее:
x (global): 0
y (global): 50
потому что x и y являются глобальными переменными со значениями 0 и 50. Достаточно просто. то мы видим:
x (in Thing): 0
y (in Thing): 10
потому, что в объекте «вещь», у нас есть экземпляр объекта переменной «у», которая выигрывает конфликт имен между ним и глобальной переменным.
Тогда мы входим declareAndCheck, где мы видим:
x (local declared): 40
y (local declared): 100
, потому что мы теперь имеем глобальные х и локальную х, и местные всегда побеждает, и у нас есть экземпляр у, и локальная у, и снова местные всегда выигрывают.
Наконец мы снова напечатать х и у в глобальном контексте, и потому, что нет никакого конфликта, мы видим:
x (global, again): 0
y (global, again): 50
И если это не имеет смысла для вас, проходят через эти учебники, они учат вас программирование в обработке =)
Пожалуйста, объясните более подробно, чего вы хотите достичь, поскольку в настоящее время самым простым ответом будет «использовать 2 переменные» или «объявить их внутри функции», но это, соответственно, сделает невозможным взаимодействие и сделать их невидимыми вне их функции. – fvu
Это выглядит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – Alnitak
Непонятно, чего вы пытаетесь достичь здесь. Вы объявили «X» глобальной переменной. Но вы, вероятно, хотите сделать это локальной переменной, объявленной в верхней части Rect1() и Rect2(), или вам может понадобиться передать ссылку или указатель на переменную в каждую функцию, а затем вызывающий (draw()) могут использовать разные переменные для вызовов Rect1() и Rect2(). – Ant