2013-05-11 2 views
0

이것은 Registration.java로 저장된 등록 클래스입니다.Java에서 배열 프로그래밍

public class Registration { 
    int registrationId; 
    double fees; 
    int marks; 
public void setRegistrationId(int registrationId){ 
    this.registrationId=registrationId; 
} 
public int getRegistrationId(){ 
    return registrationId; 
} 
public void setFees(double fees){ 
    this.fees=fees; 
} 
public double getFees(){ 
    return fees; 
} 
public void calculateFees(int marks){ 
    int discount=0; 
    if(marks>=85 && marks<=100) 
     discount = 12; 
    else if(marks>=75 && marks<=84) 
     discount = 7; 
    else if(marks>=65 && marks<=74) 
     discount = 0; 
    else 
     System.out.println("You have not passed!"); 
    fees = fees-(fees*(discount/100.0)); 
    System.out.println("The discount availed is "+discount+" % and the fees after discount is: "+fees); 
} 
} 

스타터 방법을 개최 DemoReg1.java라는 또 다른 클래스입니다.

public class DemoReg1 { 

    public static void main(String[] args) { 
    int branchList[]={1001,1002,1003,1004,1005}; 
    double fees[]= {25575,15500,33750,8350,20500};  
    Registration reg = new Registration(); 
    reg.setRegistrationId(2001); 
    int branchId=1002;  
    double fees1=0; 
    for(int i=0;i<branchList.length;i++) 
    { 
     if(branchList[i]==branchId) 
     { 
      fees1=fees[i]; 
      reg.setFees(fees1); 
      System.out.println("The Registration ID is:"+reg.getRegistrationId()); 
      System.out.println("The fees before discount is:"+reg.getFees()); 
      reg.calculateFees(79); 
      break; 
     } 
     } 
     } 
    } 

내가 얻을 출력은 다음과 같습니다

The Registration ID is:2001 
The fees before discount is:15500.0 
The discount availed is 7 % and the fees after discount is: 14415.0 

나는 branchId 제공 할 때 다음과 같은 성명을 인쇄하는 '다른'조건을 추가 할 (지역 변수) 1006

말씀입니다
System.out.println("Invalid branch ID"); 

위의 진술을 코드에 추가해야합니까? 감사합니다.

답변

6

당신이 지점을 발견하는 경우 true로 설정되는 부울 변수를 소개하고, 후에이 부울 변수의 값을 확인 루프 :

boolean branchFound = false; 
for(int i=0;i<branchList.length;i++) 
{ 
    if(branchList[i]==branchId) 
    { 
     branchFound = true; 
     fees1=fees[i]; 
     reg.setFees(fees1); 
     System.out.println("The Registration ID is:"+reg.getRegistrationId()); 
     System.out.println("The fees before discount is:"+reg.getFees()); 
     reg.calculateFees(79); 
     break; 
    } 
    } 
    } 
} 
if (!branchFound) { 
    System.out.println("Invalid branch ID"); 
} 

당신은 아마 클래스 (BranchIdAndFee)를 소개한다 대신 병렬 배열을 사용하는의 branchId 및 관련 수수료를 보유하고 있습니다. 또한 루프를 수행하지 않고 일정 시간에 분기 ID에서 정보를 가져올 수 있으려면 Map<Integer, BranchIdAndFee>을 사용해야합니다. for 루프 후

+1

+1은'Map'을 사용합니다. –

+0

정말 고마워요! –

3

else 절을 사용하는 대신 boolean 플래그를 설정하고 루프 후에 값을 확인하십시오. 그것이 사실이라면 유효한 분기가 있음을 알 수 있습니다. 오류 메시지가 필요 없습니다. 그렇지 않으면 오류 메시지를 출력해야합니다.

boolean isValidBranch = false; 
// Create a flag.  

for(int i=0;i<branchList.length;i++) 
{ 
    if(branchList[i]==branchId) 
    { 
     isValidBranch = true; 
     fees1=fees[i]; 
     reg.setFees(fees1); 
     System.out.println("The Registration ID is:"+reg.getRegistrationId()); 
     System.out.println("The fees before discount is:"+reg.getFees()); 
     reg.calculateFees(79); 
     break; 
    } 
    } 

플래그가 true로 설정되어있는 경우 단순히 확인 :

if(!isValidBranch) 
{ 
    // Print out your error message. 
} 
+0

너무 감사합니다! –

+0

즐거움! 답변 중 하나를 올바른 것으로 표시하십시오. 그의 것 같아요 내 것보다 조금 나아 :) – christopher

+1

너도 잘 했어! 그래서, 대단해! :-) 모든 도움에 감사드립니다. –

0

, 당신은 공급 분기 ID 예를 들어, 유효 여부를 테스트 할 수 있습니다

int ii; 

for (ii = 0 ; ii < branchList.length; ii++) 
{ 
    if (branchList[ii] == branchId) 
    { 
    // do your calculations 
    break; 
    } 
} 

if (ii == branchList.length) 
{ 
    printf("Error: supplied branch ID %d was invalid\n", branchId); 
} 
+0

정말 고마워요! –