2011-05-07 91 views
1

我刚刚在大学学习了java编程课程。我们被要求做一个项目。但是,我在这里面临困境,一些援助将受到高度赞赏。使用在IF语句中声明的变量

 if (opt == 1) { 
      System.out.println("Enter your name:"); 
      name1 = keyboard.next(); 
      name2 = keyboard.next(); 
      System.out.println("Enter your ID:"); 
      ID = keyboard.nextInt(); 
      System.out.println("Enter semesters taken:"); 
      semtaken = keyboard.nextInt(); 
      int[] semcode = new int[semtaken]; 
      int[] subjectTaken = new int[semtaken]; 
      double[] GPA = new double[semtaken]; 
      double finalGPA; 
      for (i = 0; i < semtaken; i++) { 
       System.out.println("Enter semester code for semester no " + (i + 1)); 
       semcode[i] = keyboard.nextInt(); 
       System.out.println("Enter subjects taken:"); 
       subjectTaken[i] = keyboard.nextInt(); 
       String[][] subject = new String[subjectTaken[i]][4]; 
       int subjectsTakenNO = subjectTaken[i]; 

       System.out.println("Enter your subject code, hours, letter"); 
       for (j = 0; j < subjectTaken.length; j++) { 
        for (int k = 0; k < 3; k++) { 
         subject[j][k] = keyboard.next(); 
        } 

       } 

       GPA[i] = getGPA(subject, subjectsTakenNO); 
       totalGPA += GPA[i]; 
       finalGPA = totalGPA/semtaken; 
       System.out.println("Your GPA for this term is" + getGPA(subject, subjectsTakenNO)); 
      } 
      opt1 = true; 
     } /* Here is the PROBLEM. I want to get I want to get semtaken and gpa but it shows an 
      error (Variable not found) */ 
     else if (opt == 2 && opt1) { 
      summary(name1, name2, ID, GPA, totalGPA, semtaken, semcode); 

所以基本上,我想使用IF中的totalGPA,semtaken,semcode和GPA。我如何使用它们而不会显示错误“找不到变量”?我不能在IF之前初始化数组,因为我不知道它的大小。用户输入尺寸,因此必须在IF内。

+0

我试过下面的解决方案,我很感激帮助,但最后它的值显示为零。我想检索由“IF”语句分配的值。 – 2011-05-08 08:57:30

回答

5

您不能分配,但你可以将其引入。

int[] list = null; 
if (...) { 
    list = new int[10]; 
} 
Do what so ever with list. 
+0

这将触发“未初始化”,如果添加if – Bozho 2011-05-07 16:23:17

+0

= null以外使用,谢谢指出。 – harism 2011-05-07 16:24:34

2

你可以将其定义外,如果:

GPA[] array = null; //or new GPA[0]; 

if (...) { 
    array = new GPA[x]; 
} 
+0

是的,但价值将为零。 – 2011-05-08 04:34:20

+0

是的..但是如果你指定他们赢得的任何东西 – Bozho 2011-05-08 09:35:51

0

只是声明(但不初始化),你需要的ifif之前的变量。例如

int semtaken; 
if (opt == 1) { 
    ... 
    semtaken = ...; 
    ... 
} 
foo(semtaken);