public class testbean {    public static void check (String param , String value) {//方法不可用
if((value==null)||((value.trim()).equals(""))) {
value="1";
}
if(param.equals("pnumber")) {
try {
int num = Integer.parseInt(value);
} catch (NumberFormatException nume) {
value="not number";
}
}
    }
public static void main(String args[]) {
     String pnumber="not null";
//if((pnumber==null)||((pnumber.trim()).equals("")))
// pnumber="i have changed"; 
     check("pnumber",pnumber);
System.out.println("pnumber="+pnumber);
}
}编译通过,也能执行,就是不调用check方法(pnumber不会更改,输出为 pnumber = not null),方法名换过也不行,不用static修饰方法,再main中用实例名.check也不行,怎么回事?
但注释掉的两行则可以正确执行(pnumber = i have changed)。何解?

解决方案 »

  1.   

    形参 和 实参 的区别, 估计楼主给搞混了。。
    你在你的check里面添上一个 
    System.out.println("ENTER!");
    你看看有没有调用
      

  2.   

    调用过方法,但是你想的String值的变化不会发生
      

  3.   

    这样写行不行?
    public class test
    {
        public static String check (String param , String value)
    {//方法不可用
    if((value==null)||((value.trim()).equals(""))) 
    {
    return "1";
    }
    if(param.equals("pnumber"))
    {
    try 
    {
    int num = Integer.parseInt(value);

    catch(NumberFormatException nume) 
    {
    return "not number";
    }
    return value;
    }
    return value;
        }
    public static void main(String args[])
    {
    String pnumber="5";
    //if((pnumber==null)||((pnumber.trim()).equals("")))
    // pnumber="i have changed"; 
         pnumber=check("pnumber",pnumber);
    System.out.println("pnumber="+pnumber);
    }
    }
      

  4.   

    String 是不可变的,用StringBuffer:
    public class testbean {    public static void check(String param, StringBuffer v) {
            String value = v.toString();//方法不可用
            if ((value == null) || ((value.trim()).equals(""))) {
                v.delete(0, value.length()).append("1");
            }
            if (param.equals("pnumber")) {
                try {
                    int num = Integer.parseInt(value);
                } catch (NumberFormatException nume) {
                    v.delete(0, value.length()).append("not number");
                }
                System.out.println(v);
            }    }    public static void main(String args[]) {
            StringBuffer pnumber = new StringBuffer("not null");
            //if((pnumber==null)||((pnumber.trim()).equals("")))
            // pnumber="i have changed";
            check("pnumber", pnumber);
            System.out.println("pnumber=" + pnumber);
        }
    }
      

  5.   

    程序已经全部执行了。
    public class testbean {    public static void check (String param , String value) {//•û–@•s‰Â—p
    System.out.println("check*******8");
    if((value==null)||((value.trim()).equals(""))) {
    value="1";
    }
    if(param.equals("pnumber")) {
    try {
    System.out.println("value="+value);
    int num = Integer.parseInt(value);
    } catch (NumberFormatException nume) {
    value="not number";
    System.out.println("value2="+value);
    }
    }
        }
    public static void main(String args[]) {
         String pnumber="not null";
    //if((pnumber==null)||((pnumber.trim()).equals("")))
    // pnumber="i have changed";
         check("pnumber",pnumber);
    System.out.println("pnumber="+pnumber);
    }
    }打印结果:
    D:\Exercises>java testbean
    check*******8
    value=not null
    value2=not number
    pnumber=not null
    不知道你想证明什么?
    希望以后说明程序目的。
      

  6.   

    public class test_string
    {
     String a="aaa";
     public static void change(String b)
      {
        b="bbb";
        System.out.println(b);
      }
     public static String change2(String c)
      {
        return c;
      }
     public static void main(String args[])
       {
         String a="aaa";
         System.out.println(a);
         change(a);
         System.out.println(a);
         a+=change2(a);
         System.out.println(a);
        }
    }
    结果是:
    aaa
    bbb
    aaa
    aaaaaa
      

  7.   

    谢谢各位
    我也搞定了,确实是应该使用StringBuffer,妈妈的,狗屁String真烦人另外我还想问一下,classpath加载类的方式与顺序是怎样的?哪里有这方面的介绍?再次感谢各位,谢谢你们的帮忙。
      

  8.   

    String类在java中虽然是类,但他被定义成不可改变的类,所以它可以看成一个值类型变量,不是饮用类型变量,其他的类可以用你的办法。不过我看你的程序感觉像是在操作指针。