new-JAVA方法递归调用后,对象的值没改变

问题描述

JAVA方法递归调用后,对象的值没改变
 void CreateBiTree(BiTree T){
        Scanner in = new Scanner(System.in);
        T = new BiTree();
        try{
            T.data = in.nextInt();
        }
        catch(InputMismatchException e){
            T = null;
            return ;
        }
        CreateBiTree(T.lchild);
        CreateBiTree(T.rchild);
    }

输入153 . .后,T的值仍是null
我其实是输入了153 第一个输入的INT是153
然后 . 这是个字符...就会异常处理,然后把子树变成NULL
但是当整个递归完了之后,T这个对象应该是只有一个根结点的树
不过运行的时候它却是null

解决方案

你只输入了一个数,于是递归调用走到了
InputMismatchException e
就null了

解决方案二:

我其实是输入了153 第一个输入的INT是153
然后 . 这是个字符...就会异常处理,然后把子树变成NULL
但是当整个递归完了之后,T这个对象应该是只有一个根结点的树
不过运行的时候它却是null

解决方案三:

使用递归调用,先要确定你的方法是不是对的;至少你自己要相信方法是没问题时在使用递归;

时间: 2024-08-31 04:51:10

new-JAVA方法递归调用后,对象的值没改变的相关文章

axis2发布webservice-spring注入的问题,set方法会调用并且有值,但是调用后变成null值

问题描述 spring注入的问题,set方法会调用并且有值,但是调用后变成null值 我用set方法注入,用axis2发布了webservice,在服务启动的时候,相应的set方法会注入进去,但是当我调用方法的时候,本来注入到方法里的属性就会变成了null. 配置文件 就是一层一层的注入的 <!-- 创建SqlSessionFactory,同时指定数据源--> <bean id="sqlSessionFactory" class="org.mybatis.s

java方法内调用方法,参数传递对象是否线程安全

问题描述 按自己的理解,线程执行,其中基本数据类型是放置于stack中,但引用堆中对象,当在方法中调用其他方法参数为对象时,是否每个对象针对线程唯一,是否线程安全,求赐教 问题补充:public class Business1 {public void method1(){System.out.println(Thread.currentThread().getName());User user = new User();user.setId(123456l);user.setUserName(

javascript中声明函数的方法及调用函数的返回值_基础知识

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <!--js中声明函数的方法--> <script type="text/javascript"> //因为javascript是弱类型的语言,所以参数不需要加类型.函数的也不需要像c#那样要求所以路径都需要有返回值(这个不像c#语言,而且c#的方法也不需要在方法

server-Java方法互相调用问题,求大神指教

问题描述 Java方法互相调用问题,求大神指教 我简化一下我的程序,大概是这个意思,定义了三个方法如下: public class Server(){public void A(){ B();//在A方法里面调用B } public void B(){ ----//B里面不调用别的方法 } public void C(){ A();//在C方法里面调用A } public static void main(String[] args) { Jnew Server(); } } 程序简化后大概是这

java-JAVA函数递归调用问题

问题描述 JAVA函数递归调用问题 /** 计算5!/ public class Function { static int i=5,sum=1; public static void print(){ sum=sum*i; i--; if(i>1) {print(); System.out.println("***** "+sum); } else System.out.println("sum="+sum); } public static void ma

java方法参数传值传引用的一点看法

  java 跟C++不同,java的方法参数都是传值,没有传引用.很多人都以为是传引用,而且这种错误的观点很普遍,今天在这里具体分析一下.方法参数有基本类型,如int等,另外一种类型是OBJECT,对象.详细说一下方法参数是对象的,跟C++不同的是,JAVA方法参数传对象,传的是对这个对象引用的一份拷贝,即地址值,跟原来的引用都是指向同一个对象.所以说,JAVA方法参数传的都是值. 程序一 传的对象值是改变的.public class Test{public Test(){int [] cou

java基础-JAVA equals方法被调用时字符串和对象的顺序

问题描述 JAVA equals方法被调用时字符串和对象的顺序 如图所示 equals方法中对象在前还是字符串在前? 是标准还是建议? 解决方案 一般建议是字符串在前,这样能够避免当你的对象为[null] 的时候,报空指针异常. 解决方案二: 字符串在前,避免当你的对象为[null] 的时候,报空指针异常

java基础-java方法调用和对象比较问题

问题描述 java方法调用和对象比较问题 public int compare(Posen o1, Posen o2) { int num = o1.getName().compareTo(o2.getName());这句话是什么意思? if(num==0) { return new Integer(o1.getAge()).compareTo(o2.getAge()); return num; } 解决方案 compareTo是String的一个方法,按照长度文字排序等返回大于0小于0和等于0

防止重载toString时产生递归调用的方法

Java中任何对象都继承于Object类,因此,每个类都有一个toString方法用于返回当前对象的字符串形式(可能是对象地址或其他和对象相关的信息).在每个类中也可以覆盖toString方法以返回自定义的字符串.如下面的代码将以一定的格式返回对象的地址: package string; public class InfiniteRecursion ...{ public String toString() ...{ return "address:" + this; } public