如果条件在java中我如何从一个条件获得一个对象到另一个条件?

时间:2014-07-27 09:43:16

标签: java

我是初学者。在下面的程序中,我想通过使用我在另一个if条件下创建的对象,在if条件中使用显示方法。有什么办法吗?

package emp;    
import java.util.*;
import emp.*;
public abstract class EmpMain2
{

    public static void main(String args[])
    {   Class cl=new Class();
        System.out.println("1:Create");
        System.out.println("2:Display");
        System.out.println("3:Raisesalary");
        System.out.println("4:Exit");
        System.out.println("-------------------");
        System.out.println("Enter choice:");
        Scanner s1=new Scanner(System.in);
        int i=s1.nextInt();
        System.out.println("-------------------");
        if(i==1)
        {
            System.out.println("1:Clerk");
            System.out.println("2:Programmer");
            System.out.println("3:Manager");
            System.out.println("4:Exit");
            System.out.println("-------------------");
            System.out.println("Enter Choice:");
            Scanner s2=new Scanner(System.in);
            int j=s2.nextInt();
            System.out.println("-------------------");
            if(j==1)
            {
                System.out.println("Enter Name:");
                Scanner s3=new Scanner(System.in);
                String str1=s3.next();
                System.out.println("Enter age:");
                Scanner s4=new Scanner(System.in);
                int i1=s4.nextInt();            
                Cleark c1=new Cleark(str1,i1);
                System.out.println("Do u want go to main menu again:");
                System.out.println("If yes press 1:");
                Scanner s10=new Scanner(System.in);
                int l=s10.nextInt();
                if(l==1)
                {
                    main(args);
                }
                else
                {
                    System.exit(0);
                }
            }
            if(j==2)
            {
                System.out.println("Enter Name:");
                Scanner s5=new Scanner(System.in);
                String str2=s5.next();
                System.out.println("Enter age:");
                Scanner s6=new Scanner(System.in);
                int i2=s6.nextInt();
                Programer p1=new Programer(str2,i2);
                System.out.println("Do u want go to main menu again:");
                System.out.println("If yes press 1:");
                Scanner s11=new Scanner(System.in);
                int l=s11.nextInt();
                if(l==1)
                {
                    main(args);
                }
                else
                {
                    System.exit(0);
                }           
            }
            if(j==3)
            {
                System.out.println("Enter Name:");
                Scanner s7=new Scanner(System.in);
                String str3=s7.next();
                System.out.println("Enter age:");
                Scanner s8=new Scanner(System.in);
                int i3=s8.nextInt();            
                Manager m1=new Manager(str3,i3);
                System.out.println("Do u want go to main menu again:");
                System.out.println("If yes press 1:");
                Scanner s12=new Scanner(System.in);
                int l=s12.nextInt();
                if(l==1)
                {
                    main(args);
                }
                else
                {
                    System.exit(0);
                }
            }
            if(j==4)
            {   System.out.println();   
                main(args);
            }
        }
        if(i==2)
        {
            System.out.println("---------------------");
            //i want to use c1,m1 and p1 objects here
            System.out.println("---------------------");
        }
        if(i==3)
        {   System.out.println("----------------------");
            //i want to use c1,m1 and p1 objects here
            System.out.println("----------------------");
        }
        if(i==4)
        {
            System.exit(0);
        }   


        System.out.println(Emp2.inc);

    }
}

3 个答案:

答案 0 :(得分:2)

要访问变量,变量必须位于相同的范围内(即在花括号分隔的同一块中),或者在较大范围的块中(即在包含当前块的块中):

{
    int i = 1;

    // i can be used here

    {
        // i can be used here
    }
}
// but i can not be used here
{
    // and i can't be used here either
}

所以不,你当前的代码是不可能的。变量必须在外部块中声明。

但即使它们是,因为它们已在i==1执行的块中初始化,并且您想在i==2执行的块中使用它们,我不会#39;看看你如何使用它们。我不能同时等于1和2。

最后,关于代码的说明:选择有意义的变量名称。使用描述变量代表内容的真实单词。我,c1,m1,p1没有任何意义,使你的代码不可读。

答案 1 :(得分:0)

而不是使用分隔的ifs,您应该使用switch case:

  switch(i){
   case 1:
      <codes>
      break;
   case 2:
      <codes>
      break;
   .
   .
   .
   default:
     <codes>

  }

此外,您必须定义switch中的对象才能访问案例

答案 2 :(得分:0)

您可以全局声明引用,然后随时创建对象,然后使用您早期创建的全局引用指向该创建的对象。 例如:

class Abc
 {
   Scanner s; //creating global reference of type Scanner
   if(//someCondition)
     {
       s = new Scanner(System.in); //creating new object of type Scanner and pointing it to reference s
     }
   if(//someOtherCondition)
    {
      String str = s.next(); // using that reference in another block
    }
 }

我认为您明白如果不是,请毫不犹豫地发表评论,如果是您的答案,请将其标记为已回答,以便不再保留在未答复的类别中。