2017-12-12 1 views
2

2 개의 클래스 (하나는 설정 메소드)이고 다른 하나는 기본 실행 메소드로 작성하는 간단한 프로그램을 작성하려고합니다.스캐너 입력을 ArrayList에 전달

퍼스트 클래스 :

import java.util.ArrayList; 

public class Practice 
{ 
    private String firstName; 
    private String lastName; 
    ArrayList<Double> sales = new ArrayList<Double>(); 

    public Practice(String firstName, String lastName) 
    { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    public void setFirstName(String firstName) 
    { 
     this.firstName = firstName; 
    } 

    public String getFirstName() 
    { 
     return firstName; 
    } 

    public void setLastName(String lastName) 
    { 
     this.lastName = lastName; 
    } 

    public String getLastName() 
    { 
     return lastName; 
    } 

    public void addSales(double sale) 
    { 
     sales.add(sale); 
    } 

    public ArrayList<Double> returnSales() 
    { 
     return sales; 
    } 
} 

메인 클래스 :

import java.util.Scanner; 

public class PracticeExecutable { 

    public static void main(String[] args) 
    { 
     double sale; 
     String firstName; 
     String lastName; 
     Scanner input = new Scanner(System.in); 

     System.out.println("Please Enter first name: "); 
     firstName = input.nextLine(); 

     System.out.println("Please Enter last name: "); 
     lastName = input.nextLine(); 

     Practice employee = new Practice(firstName, lastName); 

     do 
     { 
      System.out.println("Please enter sale amount or -1 to quit: "); 
      sale = input.nextDouble(); 
      if(sale == -1) 
       break; 
     }while(sale != -1); 

     employee.addSales(sale); 
     input.close(); 


     System.out.println("Name: " + employee.getFirstName() + " " + 
      employee.getLastName()); 
     System.out.println("Sales: " + employee.returnSales()); 
    } 

} 

그때 입력 된 매출을 인쇄, ArrayList의 판매로 사용자 입력을 전달하려고하지만, 것 같다 "-1"만을 판매로 인식합니다. 문제를 찾을 수없는 것 같습니다.

+0

프로그램에서 판매액을 물을 때 입력하는 내용은 무엇입니까? – newOne

답변

1

루프에서는 판매가 유효하지 않고 유효한 판매 가치가없는 것으로 확인하기 때문입니다. 루프에서 빠져 나올 때 (판매 입력 -1) 잘못된 값을 목록에 추가합니다. 변화 같은 루프이 간단한 이동 employe.addSales (판매)의 경우 :

 do { 
      System.out.println("Please enter sale amount or -1 to quit: "); 
      sale = input.nextDouble(); 
      if(sale == -1) break; 
      employee.addSales(sale); 

     } while(sale != -1); 
+1

와우. 나는 내가 어떻게 그것을 간과하는지 전혀 모른다. 감사! –

+0

@ greglorious_85 환영합니다. – fxrbfg

1

조심스럽게이 라인 준수 :

employee.addSales (판매);

이것은 판매를 ArrayList에 추가하는 행입니다. 이 행은 한 번만 실행되며 항상 -1 값을 갖습니다. Afterall 때 판매가 -1 일 때 루프가 중단됩니다. 그래서 단순히 ArrayList에 -1을 추가합니다.
해야 할 일은이 행을 do 블록 안에 넣고 블록을 이동하는 것입니다. sales 값이 -1이 아닌 경우 판매가 ArrayList에 추가되었는지 확인하십시오. 나머지는 괜찮을거야.

+0

이제 알았습니다. 감사! –

관련 문제