2014-12-07 80 views
0

我被要求寫一個程序,需要5到10之間的數字,並找出其中有多少是偶數,有多少奇數使用自由落體的方法Switch-Case語句。我已經編寫了代碼,並且我已經在一個本地範圍內聲明瞭變量,其中包含相同的開關箱,所以我不認爲這是塊範圍的問題。如果數字是奇數(1,3,5,7,9),則奇數計數器變量(oc)遞增。偶數字也是如此。如果數字不在範圍內,則打印出「INVALID Entry」(它繼續,並且不會中斷程序)。偶數整數和奇數整數計數與開關案例

import java.util.*; 

public class Even { 
    public static void main(String[] args){ 
     Scanner sc = new Scanner(System.in); int n= 0; int ec, oc = 0; 
     for (int i = 1; i<=5; i++){ 
      System.out.println("Enter a number"); 
      n = sc.nextInt(); 
      ec= 0; oc = 0; 

      switch(n){ 
       case 1: oc = 0; 
       case 3: 
       case 5: 
       case 7: 
       case 9: oc++; break; 
       // Now Even 
       case 2: ec = 0; 
       case 4: 
       case 6: 
       case 8: 
       case 10: ec++; break; 

       default: System.out.print("Invalid Entry"); 
      } 
     } 
     System.out.println("Total number of even integers: " + ec + " and odd integers " + oc); 
    } 
} 

的問題是,它給人的錯誤:在這一行「EC可能尚未初始化」在節目的結尾:「的System.out.println(」偶數總數:「+ ec +「和奇數整數」+ oc);「。

爲什麼會導致此錯誤?這怎麼解決?對不起,如果這看起來很愚蠢,我是一個新手,我的意圖是學習。非常感謝!

回答

0

近,你有這條線的頂部 -

Scanner sc = new Scanner(System.in); int n= 0; int ec, oc = 0; 

變化int ecint ec=0

Scanner sc = new Scanner(System.in); int n= 0; int ec=0, oc = 0; 

此外,你應該在單獨的行中的所有語句 -

Scanner sc = new Scanner(System.in); 
int n= 0; 
int ec, oc = 0; 
0

之前for循環,初始化變量ec

Scanner sc = new Scanner(System.in); 
int n= 0; 
int ec = 0, oc = 0; 
0

編譯器要求的局部變量初始化,使其不小心嘗試讀取未明確賦值。

雖然在循環中賦值,但編譯器在System.out.println所在的作用域中找不到初始化,所以仍然抱怨。只需在您聲明的位置初始化變量ec即可。

0

原因是ecfor循環內初始化,從編譯器的角度來看,它永遠不會被執行。在聲明int ec, oc = 0;中,只有oc0初始化。