2016-04-04 16 views
0

Temel olarak, çalışan bilgilerinin girildiği ve daha sonra hesaplandığı bir bordro takviminde olan bir ödev üzerinde çalışıyorum. Son adı, ilk adı ve net ücreti bir diziye sakladım, böylece sonlandırıldığında, dizi soyadı ve net ücreti gösterecektir. Ben java'da yeni başlayan biriyim ve bunu bir süredir düzeltmeye çalışıyorum.Belli bir durum girildiğinde nasıl durulur?

İşte benim kodudur:

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package cuyamacapayroll; 
import java.util.*; 
import java.util.Arrays; 


class CuyamacaPayroll { 

public static void main(String[] args) {  
Scanner sc = new Scanner(System.in); 

    double grossWages, taxesWithheld, retirementWithheld, netWages, salary; 
    String firstName, lastName; 
    int typing; 
    int numOfHours;   
     String employeeFirstName[] = new String[5]; 
     String employeeLastName[] = new String[5]; 
     double employeeNetWages[] = new double[5]; 

System.out.println("Cuyamaca Travel Agency Weekly Payroll Calculator"); 

int count = 0; 
while(true) { 
//Prompt the user for the employee type, followed by the employee name (first and last). 
    System.out.print("Enter Employee Type [S]alaried, [H]ourly, [T]emporary, [Q]uit, [D]isplay Information: "); 
    char typeOfEmployee = sc.next().charAt(0); 
//After the employee name has been entered, you will use a switch statement 
//to determine the next course of action dependent on the employee type. 
//Your switch statement must be able to support both upper-case and lower-case characters, 
//representing employee type. Depending on the employee type, 
//you will prompt the user for either their yearly or hourly salary. 

switch(typeOfEmployee) { 

    case 's': 
    case 'S': 

     System.out.print("Enter Employee First Name: "); 
       firstName = sc.next(); 
       employeeFirstName[ count ] = firstName; 

     System.out.print("Enter Employee Last Name : "); 
       lastName = sc.next(); 
       employeeLastName[ count ] = lastName; 

     System.out.print(firstName + " " + lastName + "'s Yearly Salary: "); 
       salary = sc.nextDouble(); 

     System.out.print("Enter " + firstName + " " + lastName + "'s Number of Hours: "); 
       numOfHours = sc.nextInt(); 

     System.out.println("Employee: "+firstName+" "+lastName); 
       grossWages = salary/52; 
       taxesWithheld = grossWages *.18; 
       retirementWithheld = grossWages * .04; 
       netWages = grossWages - taxesWithheld - retirementWithheld; 
       employeeNetWages[ count ] = netWages; 
        count = count + 1; // moves the array to next index 

     System.out.printf("Gross Wages: $%.2f\n", grossWages); 
     System.out.printf("Taxes Withheld: $%.2f\n", taxesWithheld); 
     System.out.printf("Retirement Withheld: $%.2f\n", retirementWithheld); 
     System.out.printf("Net Wages: $%.2f\n", netWages); 
       typeOfEmployee = 0; 
break; 
case 'h': 
case 'H': 
      System.out.print("Enter Employee First Name: "); 
       firstName = sc.next(); 
       employeeFirstName[ count ] = firstName; 

       System.out.print("Enter Employee Last Name : "); 
       lastName = sc.next(); 
       employeeLastName[ count ] = lastName; 


       System.out.print(firstName + " " + lastName + "'s Hourly Salary: "); 
      salary = sc.nextDouble(); 

      System.out.print("Enter " + firstName + " " + lastName + "'s Number of Hours: "); 
      numOfHours = sc.nextInt(); 

      System.out.println("Employee: "+firstName+lastName); 
      grossWages = salary * numOfHours; 
      taxesWithheld = grossWages *.18; 
      netWages = grossWages - taxesWithheld; 
      employeeNetWages[ count ] = netWages; 

        count = count + 1; // moves the array to next index 
      System.out.println("Gross Wages: $"+grossWages); 
      System.out.println("Taxes Withheld: $"+taxesWithheld); 
      System.out.println("Net Wages: $"+netWages); 
      break; 
case 't': 
case 'T': 
      System.out.print("Enter Employee First Name: "); 
       firstName = sc.next(); 
       employeeFirstName[ count ] = firstName; 

       System.out.print("Enter Employee Last Name : "); 
       lastName = sc.next(); 
       employeeLastName[ count ] = lastName; 


       System.out.print(firstName + " " + lastName + "'s Hourly Salary: "); 
      salary = sc.nextDouble(); 
      System.out.print("Enter " + firstName + " " + lastName + "'s Number of Hours: "); 
      numOfHours = sc.nextInt(); 
      System.out.println("Employee: "+firstName+lastName); 
      grossWages = salary * numOfHours; 
      if(numOfHours > 35) 
      grossWages += salary * (numOfHours - 35) * 0.5; 
      System.out.println("Gross Wages: $"+grossWages); 
      System.out.println("NO Taxes Deducted"); 
      break; 

case 'd': 
case 'D': 

    System.out.println("Display Employees: Sort By [L]ast Name, [W]ages or [X] To Quit: "); 
    break; 

case 'l': 
case 'L': 

    System.out.println("Last Names Are : " + Arrays.toString(employeeLastName)); 
    break; 

case 'w': 
case 'W': 

    System.out.println("Net Wages Are : " + Arrays.toString(employeeNetWages)); 
    break; 

case 'q': 
case 'Q': 
    return; 

default : System.out.println("Invalid Employee Type"); 
} 



} 

} 

      } 

Ben "D" Ben işçi bilgiler soran durdurmak istiyor girdiğinizde

.

Ayrıca, dizileri alfabetik sıraya göre sıralamanın bir yolu var mı?

Yardımlarınız için teşekkür ederiz!

cevap

1

bir boolean değişken oluşturmak .. sonsuza döngü orada tutacak, iken (doğru) ise koşulunu değiştirmek ve ayarlamak veya anahtarın bağlı değerini temizlemek preslenmiş

gibi:

int count = 0; 
boolean flag = false; 
while(!flag) { 
... 
case 'd': 
case 'D': 

    System.out.println("Display Employees: Sort By [L]ast Name, [W]ages or [X] To Quit: "); 
flag = true; 
    break; 
+0

Cevap için teşekkürler. Yanlış yanlış hecelendiğini fark ettim ve bunu düzeltdim. Sahte = doğruyu denedim; ve bana beklenmedik bir hata verdi, ancak bayrağı değiştirdim = true; ve hata yok, ama bir düzeltme yoktu. Baska öneri? – JohnnyB

+0

olması gerekir (! Bayrak) ve bayrak = doğru ..., cevabı güncelledim ... yorum için teşekkürler –

+0

Merhaba, teşekkürler. D girdiğimde, tüm programı değil, döngüyü sonlandırır. – JohnnyB

2

yerine iddialı bir ise (doğru) ile ise döngü çalışan bir boolean değişkeni t kullanımı o döngüyü kontrol eder.

olarak bildir: boolean check = true;

durumdur şimdi olsa: (kontrol) ise {} anahtarı durumunda 'D' sen 'D' davasını girmek eğer öyleyse sonlandırmak istiyorum yılında

bu boole olarak YANLIŞ olun. böylece döngüden çıkacaksın.

Umarım bu size yardımcı olacaktır.

İlgili konular