954,523 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Homework help

Hi all,

I'm new here, and am currently taking an introductory programming course taught with Java 5. I really hate to come here, and bother people with my homework, but I really don't have anywhere else to turn at the moment. I have a couple of quick questions about some assignments. Any help you all could give me would be very much apreciated.

My first question concerns an assignment I have already completed, but had alot of problems with scanner commands on. We were given a shell program to copy, and modify, however there was a problem with a section of the program that I coppied not working correctly.

Here is the problem section:

import java.util.Scanner;
import java.text.NumberFormat;

public class Salary
{
   public static void main (String[] args)
   {
       double currentSalary;  // employee's current  salary
       double raise;          // amount of the raise
       double newSalary;      // new salary for the employee
       String rating;         // performance rating

       Scanner scan = new Scanner(System.in);

       System.out.print ("Enter the current salary: ");
       currentSalary = scan.nextDouble();
       System.out.print ("Enter the performance rating (Excellent, Good, or Poor): ");
       rating = scan.nextLine();


For some reason when the program ran the "rating = scan.nextLine();" was ignored. When the previous scan command "currentSalary = scan.nextDouble();" was removed from the program though the scan.nextLine(); command would work. I wound up using scan.next instead of scan.nextLine, and the program ran as intended.

I'm just curious why this happened.

My second question concerns a CodeLab(a programming Q & A website) question that I have been stuck on for quite some time. Here is the question:A class named Clock has two instance variables: hours (type int ) and isTicking (type boolean) . Write a constructor that takes a reference to an existing Clock object as a parameter and copies that object's instance variables to the object being created.

Your task: Write a Clock constructor that makes this possible. Just write this constructor -- don't write the whole class or any code outside of the class!

For example, if cl is a reference to a Clock object, whose hours and isTicking values are 10 and false respectively, the expression new Clock(cl) results in a new Clock object, whose instance variables' values are also 10 and false.

I know how to write a constructor, my problem is using the previous instance as a parameter. I've played with this problem for hours, but haven't figured out a working constructor yet. If anyone could give me some kind of hint on what kind parameter type I should use for this it would be a big help.

Thanks in advance.

Tenchi
Newbie Poster
4 posts since Jun 2005
Reputation Points: 10
Solved Threads: 0
 

On the first exercise, you should have used .next() to read the string instead of .readLine(). I'm not sure why that didn't work unless that method is only for the BufferedReader. Maybe someone can help clarify that for you.

rating = scan.next();

On the second assignment, you should have something of the sort:

variable 1;
    variable 2;
    public constructorName(Clock c)
    {       
          this.variable1 = c.getVariable1();
         this.variable2 = c.getVariable2();
    }
}


That is of course only the constructor. That should help you out a little. For me to help you out more, you'll have to show some work so I don't get yelled at for doing someones homework. One more thing, when I'm assigning those objects variables to the current objects, I'm guessing you have methods in the other class that returns the variables value.

server_crash
Postaholic
2,111 posts since Jun 2004
Reputation Points: 113
Solved Threads: 20
 

Thank you very much. Turns out I was using the right parameter, and just forgetting the "c." infront of my getters. So it was easy to fix with your help.

Tenchi
Newbie Poster
4 posts since Jun 2005
Reputation Points: 10
Solved Threads: 0
 

I was reading the api for Scanner and I could not find any readLine method. I think the reason it was allowed to compile, is somewhere down the line it inherits that method...But if it inherited it, it should be able to use it...?? I'm confused on that one. I know the readLine() method is suppose to be for the BufferedReader, but it didn't give us a syntax error.

server_crash
Postaholic
2,111 posts since Jun 2004
Reputation Points: 113
Solved Threads: 20
 

You missunderstood my question conserning the scanner methods a bit. The problem command was nextLine, not readLine. I'll try and explain a little better.

As part of a larger program I need to scan a double and a string token, and for some reason the nextLine command would not work when proceeded by a nextDouble, however it would work if the proceeding nextDouble was removed from the program. So here are three short programs I used to test the issue, and the results...

import java.util.Scanner;


public class STest
{
   public static void main (String[] args)
   {
       double currentSalary;  // employee's current  salary
       String rating;         // performance rating

       Scanner scan = new Scanner(System.in);
		 
       System.out.print ("Enter the current salary: ");
       currentSalary = scan.nextDouble();
       System.out.print ("Enter the performance rating (Excellent, Good, or Poor): ");
       rating = scan.nextLine();
		 System.out.println(""+currentSalary);
		 System.out.println(""+rating);
		 
	}
}


This would scan the double, then print the double, and then end. Skipping the nextLine command in the process.

import java.util.Scanner;


public class STest
{
   public static void main (String[] args)
   {
       
       String rating;         // performance rating

       Scanner scan = new Scanner(System.in);
		 
		
       System.out.print ("Enter the performance rating (Excellent, Good, or Poor): ");
       rating = scan.next();
		 System.out.println(""+currentSalary);
		 
		 
	}
}


Now without the proceeding nextDouble. It will scan the string, and print it.

import java.util.Scanner;


public class STest
{
   public static void main (String[] args)
   {
       double currentSalary;  // employee's current  salary
       String rating;         // performance rating

       Scanner scan = new Scanner(System.in);
		 
       System.out.print ("Enter the current salary: ");
       currentSalary = scan.nextDouble();
       System.out.print ("Enter the performance rating (Excellent, Good, or Poor): ");
       rating = scan.next();
		 System.out.println(""+currentSalary);
		 System.out.println(""+rating);
		 
	}
}


Finally, if I use next instead of nextLine. It scans both the double, and the string token, and prints both.

Tenchi
Newbie Poster
4 posts since Jun 2005
Reputation Points: 10
Solved Threads: 0
 

Opps the second program should use the nextLine method not the next method so...

import java.util.Scanner;


public class STest
{
   public static void main (String[] args)
   {
       
       String rating;         // performance rating

       Scanner scan = new Scanner(System.in);
		 
		
       System.out.print ("Enter the performance rating (Excellent, Good, or Poor): ");
       rating = scan.nextLine();
		 System.out.println(""+currentSalary);
		 
		 
	}
}
Tenchi
Newbie Poster
4 posts since Jun 2005
Reputation Points: 10
Solved Threads: 0
 

hey I am new in java and i want a program that makes the user enter his e_mail address like (user1@liu.edu.uk) and the program output it's:
country code: uk
master domain: edu
sub domain: liu
user name: user1
please can anny one made it?? :S:S

haidarsss
Newbie Poster
1 post since Oct 2009
Reputation Points: 10
Solved Threads: 0
 

Tenchi, your problem with the nextLine() not working is the same problem I recently explained to another user on Daniweb. I'll paste my response to him here since the problem you have is exactly identical.


"The reason it gives you trouble is because when the user enters an integer then hits enter, two things have just been entered - the integer and a "newline" which is \n. The method you are calling, "nextInt", only reads in the integer, which leaves the newline in the input stream. But calling nextLine() does read in newlines, which is why you had to call nextLine() before your code would work. You could have also called next(), which would also have read in the newline."

BestJewSinceJC
Posting Maven
2,772 posts since Sep 2008
Reputation Points: 874
Solved Threads: 354
 
hey I am new in java and i want a program that makes the user enter his e_mail address like (user1@liu.edu.uk) and the program output it's: country code: uk master domain: edu sub domain: liu user name: user1 please can anny one made it?? :S:S


No, this forum does not allow members doing other's homework .

ithelp
Nearly a Posting Maven
Banned
2,230 posts since May 2006
Reputation Points: 769
Solved Threads: 128
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You