java全局变量 在一个方法中改变它的值,怎样在另一个方法中使用改变后的值? 5
如下:charmap[][]=newchar[16][10];Read(){try{FileInputStreamis=newFileInputStream("map1....
如下:
char map[][]= new char[16][10];
Read(){
try{
FileInputStream is = new FileInputStream("map1.txt");
int i = 0;int m=0,n=0;
while((i = is.read()) != -1){
switch(i){
case '#':
{
map[m][n] = '#';
m++;
break;
}
case '&':
{
map[m][n] = '&';
m++;
break;
}
case '\n':
{
m=0;n++;
break;
}
default:
{
break;
}
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
void Write(){
for(int m=0;m<16;m++0{
for(int n=0;n<10;n++){
switch(map[m][n]){
case '#':
System.out.println(map[m][n]);
case '&':
System.out.println(map[m][n]);
}
}
}
结果全部是0。。。。 展开
char map[][]= new char[16][10];
Read(){
try{
FileInputStream is = new FileInputStream("map1.txt");
int i = 0;int m=0,n=0;
while((i = is.read()) != -1){
switch(i){
case '#':
{
map[m][n] = '#';
m++;
break;
}
case '&':
{
map[m][n] = '&';
m++;
break;
}
case '\n':
{
m=0;n++;
break;
}
default:
{
break;
}
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
void Write(){
for(int m=0;m<16;m++0{
for(int n=0;n<10;n++){
switch(map[m][n]){
case '#':
System.out.println(map[m][n]);
case '&':
System.out.println(map[m][n]);
}
}
}
结果全部是0。。。。 展开
13个回答
展开全部
哈哈 问的挺深奥啊
简单的说,在一个方法中改变值了,由于是全局的,因此
无论在其他什么地方调用这个,都是改变后的值,要不就不能叫做全局变量了
你在调用的时候不是这样吗?
如果不是 那还有一种可能,在第一个方法中,有定义了一个同名的变量
此时的话,新定义的会屏蔽全局变量。无论怎么改变,全局变量都不会变
因此再其他地方调用的话,就是原来的值
所以,全局变量定义之后,不要在方法中定义相同名的变量,直接赋值等操作就可以
简单的说,在一个方法中改变值了,由于是全局的,因此
无论在其他什么地方调用这个,都是改变后的值,要不就不能叫做全局变量了
你在调用的时候不是这样吗?
如果不是 那还有一种可能,在第一个方法中,有定义了一个同名的变量
此时的话,新定义的会屏蔽全局变量。无论怎么改变,全局变量都不会变
因此再其他地方调用的话,就是原来的值
所以,全局变量定义之后,不要在方法中定义相同名的变量,直接赋值等操作就可以
更多追问追答
追问
在看看问题嘛,我补充了一下。。。
追答
static char map[][]= new char[16][10];
展开全部
1 . java里面一般不提全局变量的概念,因为,变量和方法都是在类里面定义的,没有在类域之外定义变量的情况。
2.在类里面定义public static 变量,基本上就有全局变量的功能。只不过需要通过类名来访问。。
如,public class a
{
public static int mm;
}
使用a.mm形式访问。。
3.如果你要通过方法来访问变量mm,这个方法一般定义是static。如
public class a
{
public static int mm;
public static void setmm(int m){ mm = m;}
}
使用a.setmm(m)访问,mm就已经改变了
2.在类里面定义public static 变量,基本上就有全局变量的功能。只不过需要通过类名来访问。。
如,public class a
{
public static int mm;
}
使用a.mm形式访问。。
3.如果你要通过方法来访问变量mm,这个方法一般定义是static。如
public class a
{
public static int mm;
public static void setmm(int m){ mm = m;}
}
使用a.setmm(m)访问,mm就已经改变了
更多追问追答
追问
那您看一看我补充了的,您觉得那要怎样写啊?
追答
你依次在read方法的几个case中打上不同log:
如
System.out.println(“##################”);
看下read执行情况。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class bb {
String name="李四";
public static void main(String[] args) {
bb a=new bb();
a.edit();
}
public void edit(){
name="张三";
System.out.println(name);
}
}
//这里面name全部变量,在edit方法修改之后就改变了,然后要使用的方法就调用edit这个方法,获得name值就行啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
完成的类代码:
import java.util.Random;
public class Demo {
public static void main (String args[]) {
Random rnd = new Random();
int numLength = 9;
int[] nums = new int[numLength];
nums[0] = rnd.nextInt(9999);
mylable: for (int i=0; i<numLength; i++) {
int p = rnd.nextInt(9999);
for (int j=0; j<i;) {
if (p==nums[j]) {
i--;
continue mylable;
}
j++;
if (j==i) {
nums[i]=p;
break;
}
}
}
for (int i=0; i<numLength; i++) {
int dig = (int) Math.log10(nums[i]);
if (dig<3) {
for (int j=1;j<dig;j++) {
System.out.print("0");
}
}
System.out.println(nums[i]);
}
}
}
测试过,运行就可以看到结果,有不懂的就问我!
import java.util.Random;
public class Demo {
public static void main (String args[]) {
Random rnd = new Random();
int numLength = 9;
int[] nums = new int[numLength];
nums[0] = rnd.nextInt(9999);
mylable: for (int i=0; i<numLength; i++) {
int p = rnd.nextInt(9999);
for (int j=0; j<i;) {
if (p==nums[j]) {
i--;
continue mylable;
}
j++;
if (j==i) {
nums[i]=p;
break;
}
}
}
for (int i=0; i<numLength; i++) {
int dig = (int) Math.log10(nums[i]);
if (dig<3) {
for (int j=1;j<dig;j++) {
System.out.print("0");
}
}
System.out.println(nums[i]);
}
}
}
测试过,运行就可以看到结果,有不懂的就问我!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不管是否在同一个包中,直接用就可以了,因为你说了这个变量是全局变量么,没什么影响啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询