在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
}
}