java、eclipse基础问题。。

初学java用eclipse写用于安卓的程序。遇到一点变量处理方面的小问题。ABC/sec/com.ABC.MAIN/下有多个class,分别是:Main.javaMy1... 初学java用eclipse写用于安卓的程序。遇到一点变量处理方面的小问题。
ABC/sec/com.ABC.MAIN/下有多个class,分别是:
Main.java My1.java My2.java ……

//=================My1.java中的代码===============
//…………(省略)
public class My1 extends View
{
int X=0;
// …………
public boolean onTouchEvent(MotionEvent arg0)
{
X=2
My2.DoX(X);
//在My2.java中对应的参见分割线之下
//方法是把X的数值+2
System.out.println(X);
//我希望结果为4,可是结果是2
}
//…………
}
//==================分割线·My2.java文件内的代码============
package ……;
import ……;
public class My2
{
static int DoX(int X){
X=X+2
}
}

希望达到的办法参见中间注释,请稍详答,如能推荐一些java方面的基础而精简的电子文档(中/英),感激不尽!542209396@qq.com
另祝新春快乐^_^
50分+送上
展开
 我来答
20新年好12
2012-01-27 · TA获得超过204个赞
知道答主
回答量:34
采纳率:0%
帮助的人:11.2万
展开全部
我只能告诉你 你压根就不理解 int类型
他按值传递的
不是地址传递的

要是有多个变量 你可以用数组或者是Map aa = new HashMap();
这种可以按地址传递的类型

import javax.swing.text.View;

public class My1 extends View
{
int X = 0;
int Y = 0;
// …………
public boolean onTouchEvent(MotionEvent arg0)
{
X = 2;
Y = 2;
Map XY = new HashMap();
XY.put("X", X);
XY.put("Y", Y);
My2.DoX(XY);
//在My2.java中对应的参见分割线之下
//方法是把X的数值+2
System.out.println(XY.get("X"));
System.out.println(XY.get("Y"));
//我希望结果为4,可是结果是2
}
//…………
}
//==================分割线·My2.java文件内的代码============

public class My2
{
static int DoX(Map XY){
XY.put("X", Integer.parseInt(XY.get("X").toString()) + 2);
XY.put("Y", Integer.parseInt(XY.get("Y").toString()) + 2);
}
}
dengddjj123
2012-01-25 · TA获得超过537个赞
知道答主
回答量:90
采纳率:0%
帮助的人:66.8万
展开全部
确实如楼上所说,你在My2里面的X是My2里面的,后面只有用returnX才能使对X进行输出~
不知道对你有没有用,回去用电脑调试下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
molinglan
2012-01-25 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:177万
展开全部
亲,My2.DoX(X);这句话错了!如果想你这么写,输出的结果永远是2!把My2.DoX(X);改成X=My2.DoX(X); 这样才可以把你的计算值接住,并输出,否则输出的永远是X=2!明白?
追问
嗯,看到你修正后的解答了,后面那个掉了个return是我当时忘了…呵呵
想追问一下,如果MyDoX里有两个变量该如何处理呢?
如MyDoX(x.y),分别对x,y进行加2,然后返回给My1.java中的x,y
追答
我想你可以定义一个数组,将返回值放在数组中……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-01-25
展开全部
import javax.swing.text.View;

public class My1 extends View
{
int X=0;
// …………
public boolean onTouchEvent(MotionEvent arg0)
{
X=2;
My2.DoX(X);
//在My2.java中对应的参见分割线之下
//方法是把X的数值+2
System.out.println(X);
//我希望结果为4,可是结果是2
}
//…………
}
//==================分割线·My2.java文件内的代码============

class My2

{
static int DoX(int X){
return X=X+2;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-01-25
展开全部
import javax.swing.text.View;

public class My1 extends View
{
int X=0;
// …………
public boolean onTouchEvent(MotionEvent arg0)
{
X=2;
X=My2.DoX(X);
System.out.println(X);
}
//…………
}
//==================分割线·My2.java文件内的代码============

class My2

{
static int DoX(int X){
return X=X+2;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知秋小枫
2012-01-25 · TA获得超过132个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:66.7万
展开全部
这个问题是变量的作用域问题。My2.DoX(x)整个语句是返回一个4,但是onTouchEvent方法中的x的值并没有改变,还是2。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式