Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何从一个if条件到另一个if条件获取对象?_Java - Fatal编程技术网

在java中,如何从一个if条件到另一个if条件获取对象?

在java中,如何从一个if条件到另一个if条件获取对象?,java,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:Cre

我是初学者。在下面的程序中,我想通过使用我在另一个
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);

    }
}

不应使用分隔的
ifs
而应使用开关盒:

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

  }
开关(一){
案例1:
打破
案例2:
打破
.
.
.
违约:
}

此外,您必须在
开关
之外定义对象才能访问案例内部

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

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

但即使是这样,因为它们是在
i==1
时执行的块中初始化的,并且您希望在
i==2
时执行的块中使用它们,所以我不知道如何使用它们。我不能同时等于1和2


最后,请注意代码:选择有意义的变量名。使用真实的词语来描述变量所代表的内容。i、 c1、m1、p1没有任何意义,使您的代码不可读。

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


我认为您理解,如果没有,请毫不犹豫地进行评论,如果是您的答案,请将其标记为已回答,这样它就不再属于未回答的类别。

您不应该构建新的
扫描仪
对象。在第一行写
final Scanner input=new Scanner(System.in)
,然后在整个代码中使用它。我知道你是个初学者,但你真的应该研究有限状态机是如何工作的,而不是递归调用主函数以达到初始状态,因为这是非常糟糕的做法。如果你想使用变量c1,m1,p1,请扩大它们的范围并优化你的代码,好吗?这对用户没有帮助。
{
    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
}
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
    }
 }