A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田向向 高级黑马   /  2012-6-21 17:18  /  2015 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田向向 于 2012-6-22 13:40 编辑

package txx;
public class Tr {
static void  func(int a, String b, String c) {
a = 1;
b.trim();
c = b;
}
public static void main(String[] args) {
int a = 0;
String b = "  Hello   World    ";
String c = "  OK  ";
func(a, b, c);
System.out.println("" + a + "," + b + "," + c);
}
}
trim函数不是去掉字符两端和多余的空格吗?这个怎么没起作用,为什么输出的结果还是0,  Hello   World    ,  OK   
我虽然是新人,但是我喜欢编程,我有上进心,求解释,求进步。

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

10 个回复

倒序浏览
我给你改了一下不是用的你那个方法但是看的更明白
class txx
{
public static void  func()
{
String a="  0    ";
String b = "  Hello   World    ";
String c = "  OK  ";
System.out.println(a.trim()+b.trim()+c.trim());
}

public static void main(String[] args) {

        func() ;
}
}
回复 使用道具 举报
你这修改的是你的传进去的参数,但是你打印的还是原来的。
回复 使用道具 举报
薄炳鑫 发表于 2012-6-21 18:03
你这修改的是你的传进去的参数,但是你打印的还是原来的。

我这个吗?你的意思是我打印出来的没去空格?
回复 使用道具 举报
  1. public class Tr {
  2.         static int a;
  3.         static String b;
  4.         static String c;
  5.         public static void main(String[] args) {
  6.                 a = 0;
  7.                 b = "  Hello   World    ";
  8.                 c = "  OK  ";
  9.                 new Tr().func(a, b, c);
  10.                 System.out.println("" + a + "," + b + "," + c);
  11.         }
  12.         public  void  func(int d, String e, String f) {
  13.                 a = 1;
  14.                 b = e.trim();
  15.                 c = f;
  16.         }
  17. }
复制代码
注意:你定义的变量在main()内,属于局部变量,不能被其他方法访问到,也就是当调用了func()的时候,修改的a,b,c是无效的。
回复 使用道具 举报
我觉得你还是把你到底想干嘛说的清楚一点。否则不好办啊。这个程序太多的不可理解之处;
回复 使用道具 举报
邓杰 中级黑马 2012-6-21 18:18:04
7#
如果你是想把a b c的值全部打印,并且去掉两头的空格呢;我这样写的、
class Tr {
static String func(int a, String b, String c) {
a = 1;
b=b.trim();
c = b;
System.out.println(b);
return new String(a+b.trim()+c) ;
}
public static void main(String[] args) {
int a = 0;
String b = "  Hello   World    ";
String c = "  OK  ";
String str=func(a, b, c);
System.out.println(str);
}
}
回复 使用道具 举报
package txx;
public class Tr {
static void  func(int a, String b, String c) {
a = 1;
b.trim(); //这个是正确的(验证代码:
                                                     String b1 = b.trim();
                                                      System.out.println(b1);
                                                      输出的是Hello   World)
                                               
c = b;
}
public static void main(String[] args) {
int a = 0;
String b = "  Hello   World    ";
String c = "  OK  ";
func(a, b, c);
System.out.println("" + a + "," + b + "," + c);
}
}
原因是:
在程序入口你是调用了func()方法。但你是在主函数里输出的,肯定还是初始化的值了懂吗?
注意:你传进去的参数要在方法里用...


还有你在func里的 b.trim();并没有给b赋值...
b肯定还是初始化的值了..
你应该用b来接受b.trim();

class Tr{
        static void  func(int a, String b, String c) {
        a = 1;
        b=b.trim();
        c = b;
        System.out.println("" + a + "," + b + "," + c);
        }
}这样输出的结果就是
1,Hello   World,Hello   World

点评

谢谢你对我的帮助,我是菜鸟,希望多多赐教哈  发表于 2012-6-22 13:39

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
田向向 + 1 赞一个!
职业规划-刘倩老师 + 1

查看全部评分

回复 使用道具 举报
严明 初级黑马 2012-6-21 18:57:28
9#
本帖最后由 严明 于 2012-6-21 18:58 编辑

java是面向对象的,怎么各位大侠的答案还有一点面向过程的影子,以下代码仅供参考,测试通过:





public class Tr
{
      static int a;
     static String b;
     static String c;
     
     private Tr(int a, String b, String c){
            
             this.a = a;
             this.b = b;
             this.c = c;
            
            
     }
     public  void  func(){
            
             System.out.println("" + a + "," + b.trim() + "," + c);
            
     }
     
         
         
        public static void main(String[] args)
        {
               
                Tr tr = new Tr(0,"  hello world  " ,"OK");
                tr.func();
               
               

        }

}











回复 使用道具 举报
本帖最后由 陈少文 于 2012-6-21 19:22 编辑

看了很长时间,我想哥们的意思是,定义两个类,
然后一个类调用另外一个类中的方法
我改了一下:

class Func
{
    public int a;
    private String b;
    private String c;
    public Func(int a,String b,String c)
    {
         a = 1;
          b.trim();
         c = b;
        System.out.println(a+ ","+b+ ","+c);
  
      }

}


public class Tr
{
       public static void main(String[] args)
      {
          Func f = new Func(0,"  Hello   World    ","  OK  ");
   
      }

}

打印结果:1,  Hello   World    ,  Hello   World
回复 使用道具 举报
package txx;
public class Tr {
static void  func(int a, String b, String c) {
a = 1;
b.trim();
c = b;
}
public static void main(String[] args) {
int a = 0;
String b = "  Hello   World    ";
String c = "  OK  ";
func(a, b, c);
System.out.println("" + a + "," + b + "," + c);    // 你打印的还是  a = 0;   b=" hello World " c ="  OK  " 明白吗?
                                                                           // 你虽然做了修改了,可是你光调用那个方法了, 你并没有打印那个方法,
                                                                           //调用打印那个方法是这样的System.out.println(func(a,b,c)); 明白?
}
}


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马