Avatar billede madseksperten Nybegynder
10. november 2011 - 16:51 Der er 20 kommentarer og
2 løsninger

min første if sætning i java

Hejsa igen.

jeg har koden:


/**
* The Student class represents a student in a student administration system.
* It holds the student details relevant in our context.
*
* @author Michael Kolling and David Barnes
* @version 2008.03.30
*/
public class Student
{
    // the student's full name
    private String name;
    // the student ID
    private String id;
    // the amount of credits for study taken so far
    private int credits;
   
      /**
    * Create a new student with a given name and ID number.
    */
    public Student(String fullName, String studentID)
    {
        name = fullName;
        id = studentID;
        credits = 0;
           
    }
   
   
public int length(String fullName)
    if (fullName length <= 4)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");

        }

    /**
    * Return the full name of this student.
    */
    public String getName()
    {
        return name;
    }

    /**
    * Set a new name for this student.
    */
    public void changeName(String replacementName)
    {
        name = replacementName;
    }

    /**
    * Return the student ID of this student.
    */
    public String getStudentID()
    {
        return id;
    }

    /**
    * Add some credit points to the student's accumulated credits.
    */
    public void addCredits(int additionalPoints)
    {
        credits += additionalPoints;
    }

    /**
    * Return the number of credit points this student has accumulated.
    */
    public int getCredits()
    {
        return credits;
    }

    /**
    * Return the login name of this student. The login name is a combination
    * of the first four characters of the student's name and the first three
    * characters of the student's ID number.
    */
    public String getLoginName()
    {
        return name.substring(0,4) + id.substring(0,3);
    }
   
    /**
    * Print the student's name and ID number to the output terminal.
    */
    public void print()
    {
        System.out.println(name + " (" + id + ")");
    }
}

Jeg er igang med min første if sætning. Opgaven lyder:

The String class defines a length accessor method with the following
signature:
/**
* Return the number of characters in this string.
*/
public int length()
Add conditional statements to the constructor of Student to print an error message if either the length of the fullName parameter is less than four characters, or the length of the studentId parameter is less than three characters. However, the constructor should still use those parameters to set the name and id fields, even if the error message is printed. Hint: use if statements of the following form (that is, having no else part) to print the error messages.
if(perform a test on one of the parameters) {
Print an error message if the test gave a true result
}

Er jeg helt galt på den?

Mvh Mads
Avatar billede arne_v Ekspert
10. november 2011 - 16:58 #1
if (fullName length <= 4)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");

        }

skal vel flyttes ind i constructoren?
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:04 #2
Hej Arne.

Hvad skulle folk og eksperten gøre uden dig :-)

Hvad med nu?


/**
* The Student class represents a student in a student administration system.
* It holds the student details relevant in our context.
*
* @author Michael Kolling and David Barnes
* @version 2008.03.30
*/
public class Student
{
    // the student's full name
    private String name;
    // the student ID
    private String id;
    // the amount of credits for study taken so far
    private int credits;
   
      /**
    * Create a new student with a given name and ID number.
    */
    public Student(String fullName, String studentID)
    {
        name = fullName;
        id = studentID;
        credits = 0;
           
      if (fullName length <= 4)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");
        }
   
   
    }
   
   

    /**
    * Return the full name of this student.
    */
    public String getName()
    {
        return name;
    }

    /**
    * Set a new name for this student.
    */
    public void changeName(String replacementName)
    {
        name = replacementName;
    }

    /**
    * Return the student ID of this student.
    */
    public String getStudentID()
    {
        return id;
    }

    /**
    * Add some credit points to the student's accumulated credits.
    */
    public void addCredits(int additionalPoints)
    {
        credits += additionalPoints;
    }

    /**
    * Return the number of credit points this student has accumulated.
    */
    public int getCredits()
    {
        return credits;
    }

    /**
    * Return the login name of this student. The login name is a combination
    * of the first four characters of the student's name and the first three
    * characters of the student's ID number.
    */
    public String getLoginName()
    {
        return name.substring(0,4) + id.substring(0,3);
    }
   
    /**
    * Print the student's name and ID number to the output terminal.
    */
    public void print()
    {
        System.out.println(name + " (" + id + ")");
    }
}



Nu får jeg fejlen:
) is expected.
Avatar billede JensPeterSvensson Nybegynder
10. november 2011 - 17:06 #3
og det skal være fullName.length() < 4
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:12 #4
total cool, nu virker det, men:

if (fullName.length() < 4)

Skal der altid være . mellem fullname og length? og hvorfor paranteserne før <?

Hvis man skal lave et "or" tegn i java, hvordan gør man så det? tænkte ift at der også kommer spørgsmålet om StudentID.

Ligger i ikke også et svar?

Mvh Mads
Avatar billede arne_v Ekspert
10. november 2011 - 17:17 #5
.length() er et metode kald
.length er et field

String length er en metode og ikke et field
Avatar billede arne_v Ekspert
10. november 2011 - 17:17 #6
OR er || i Java. Eks.:

if(a < b || a > c)
Avatar billede arne_v Ekspert
10. november 2011 - 17:18 #7
der er altid punktum mellem klasse/objekt navne og member navne
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:25 #8
if (fullName.length() < 4) || studentID.length() < 3)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");
        }
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:26 #9
if (fullName.length() < 4)
      ||
if (studentID.length() < 3)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");
        }
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:26 #10
på || siger compileren "illegal start og expression"
Avatar billede JensPeterSvensson Nybegynder
10. november 2011 - 17:28 #11
#8 var næsten rigtig men du har en ) efter 4
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:31 #12
total sejt, nu virker det sku:

if (fullName.length() < 4 || (studentID.length() < 3))
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");
        }

jeg tilføjede selvfølgelig også en parents i enden. Fedt min første konstruerede if sætning :-)

Mange tak for hjælpen, ligger i ikke et svar?
Avatar billede arne_v Ekspert
10. november 2011 - 17:32 #13
if (fullName.length() < 4 || studentID.length() < 3)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");
        }
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:33 #14
sidste spørgsmål, kan der godt være flere if sætning i en konstruktor? eller også uden for konstruktoren

fx

if (fullName.length() < 4)
      ||
if (studentID.length() < 3)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");
        }

Ved godt denne sætning ikke compiler, men selve teorien i det, om der kan være flere if sætning efter hinanden?
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:36 #15
ja kan godt se de 2 parenteser er unødvendige. Arne´s eksempel ser bedre ud:

if (fullName.length() < 4 || studentID.length() < 3)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");
        }
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:44 #16
Lige iøvrigt hvis andre læser opgaven tidligere i tråden, så står der:

Besvarelsen er sådanne:

if (fullName.length() < 4)
        {
                System.out.println("Dine intialer skal mindst være 4 cifre");
        }
if (studentID.length() < 3)
      {
                System.out.println("Du skal altså mindst skrive tre tal");
      }

Det vil sige der skal ikke bruges ||

Min fejl
Avatar billede arne_v Ekspert
10. november 2011 - 17:48 #17
med de 2 if saetninger kan du bruge forskellig besked i de to tilfaelde - det vil jo nok alt andet lige give nogle bedre fejl beskeder til brugeren !!
Avatar billede madseksperten Nybegynder
10. november 2011 - 17:54 #18
herligt, mange tak for hjælpen :-) Ligger i et svar`?
Avatar billede arne_v Ekspert
10. november 2011 - 18:21 #19
svar
Avatar billede madseksperten Nybegynder
10. november 2011 - 20:52 #20
hejsa Arne.

Jeg venter lige på svar i begge tråde før jeg lukker :-)
Avatar billede JensPeterSvensson Nybegynder
11. november 2011 - 07:39 #21
svar
Avatar billede JensPeterSvensson Nybegynder
11. november 2011 - 07:39 #22
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester