我是初学者。在下面的程序中,我想通过使用我在另一个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);
}
}
答案 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
}
}
我认为您明白如果不是,请毫不犹豫地发表评论,如果是您的答案,请将其标记为已回答,以便不再保留在未答复的类别中。