2015-03-02 2 views
0

Я создаю тип тестового типа для учебных целей, но в настоящее время я зациклился на том, как исправить свой исходный код. Я бы предпочел, чтобы кто-то объяснил это хорошо, потому что я хотел бы ничего, кроме как понять эту новичковую проблему.Программа тестирования Java с ошибками о приватном доступе

/* 
* File: polygon.java 
* Author: M. Morales 
* Date: March 1, 2015 
* Purpose: Sets the foundation for the polygon 
* test 
*/ 

public class polygon { 

    // polygon class has 4 fields 
    private int numSides; 
    private double sideLength; 
    private double xCoord; 
    private double yCoord; 

    // Default constructor 
    public polygon() { 
     numSides = 4; 
     sideLength = 10.0; 
     xCoord = 0.0; 
     yCoord = 0.0; 
    } 

    // constructor 
    public polygon (double psideLength, double px, double py, int pnumSides) { 
     numSides = pnumSides; 
     sideLength = psideLength; 
     xCoord = px; 
     yCoord = py; 
    } 

    // Setter methods 
    // setnumSides 
    private void setnumSides(int pnumSides) { 
     numSides = pnumSides; 
    } 
    // setsideLength() 
    private void setsideLength(double psideLength) { 
     sideLength = psideLength; 
    } 
    // setxCoord() 
    private void setxCoord(double px) { 
     xCoord = px; 
    } 
    // setyCoord() 
    private void setyCoord(double py) { 
     yCoord = py; 
    } 


    // Getter methods 
    // getnumSides 
    public double getnumSides() { 
     return numSides; 
    } 
    // getsideLength 
    public double getsideLength() { 
     return sideLength; 
    } 
    // getxCoord 
    public double getxCoord() { 
     return xCoord; 
    } 
    // getyCoord 
    public double getyCoord() { 
     return yCoord; 
    } 

    // Use Perimeter method to get the distance around 
    public double getperiMeter(polygon s1) { 
     // perimeter 
     double periMeter = Math.abs(s1.getnumSides() * s1.getsideLength()); 
     return periMeter; 
    } 


    // toString method 
    public String toString() { 
     String str = "(" + numSides + ", " + sideLength + "," + xCoord + "," 
     + yCoord + ")"; 
     return str; 
    } 

} 

Выше первая часть, но тест является то, что не будет собирать для меня

/* 
* File: TestPolygon.java 
* Author: M. Morales 
* Date: March 1, 2015 
* Purpose: creates simplistic polygon perimeter 
* test 
*/ 

public class TestPolygon2 { 
    public static void main(String[] args) { 

     int numSides = 4; 

     double sideLength = 10.0; 

     double xCoord = 0.0; 

     double yCoord = 0.0; 


     //Construct a polygon 
     polygon s1 = new polygon(); 


     s1.setnumSides(numSides); 

     // Call the getter methods 
     int s1numSides = s1.getnumSides(); 
     double s1sideLength = s1.getsideLength(); 
     double s1xCoord = s1.getxCoord(); 
     double s1yCoord = s1.getyCoord(); 
     // Print results 
     System.out.println("s1 values from getnumSides() getsideLength() getxCoord() getyCoord " + s1numSides + "," + s1sideLength + "," + s1xCoord + "," + s1yCoord); 

     // Call the Perimeter Method 
     double periMeter = s1.getperiMeter(s1); 
     // Print results 
     System.out.println("The perimeter of the polygon is: " + 
     periMeter); 

     // Change the value of s1 
     // Using the setter method 
     int newnumSides = 8; 
     double newsideLength = 11.0; 
     double newxCoord = 2.0; 
     double newyCoord = 2.0; 
     s1.setnumSides(newnumSides); 
     s1.setsideLength(newsideLength); 
     s1.setxCoord(newxCoord); 
     s1.setyCoord(newyCoord); 

     // Recalculate the Distance 
     periMeter = s1.getperiMeter(s1); 
     // Print results 
     System.out.println("New perimeter is: " + 
     periMeter); 
     // Display the values using toString 
     System.out.println(s1.toString()); 



    } 
} 

+0

Какая ошибка вы получаете? Кроме того, исправьте отступы для лучшей читаемости. – nomis

+0

возможный lossy конверсия из double to integer. Кроме того, что вещи, которые я установил, имеют частный доступ в polygon. –

ответ

1

The set* методов polygon класса private, так что вы не можете вызывать их из вашего TestPolygon2 класс. Вы должны изменить их на public, чтобы иметь возможность позвонить им.

+0

Сделать их частным пакетом будет достаточно (при условии, что тесты находятся в том же пакете, который является стандартным). – assylias

+0

@assylias Это зависит от того, должны ли экземпляры 'polygon' быть мутированы классами из-за пределов своего пакета. – Eran

+0

Вся суть этого конкретного вопроса заключалась в том, чтобы манипулировать ими, пока они были частными. Если бы они были публичными, было бы намного легче. –

Смежные вопросы