Incrementing ArrayElement Parameters based on previous ELEMENTS
I am new to java but have been playing with array-lists and am now stuck.
I have an array list created off a class called Car with three parameters one of which is called times moved.
Main Class
public class GarageTester {
/**
* @param args the command line arguments
*/
public static void main(String args) throws IOException{
// create Bank object
Garage bashimGarage = new Garage() ;
// create Scanner object associated with input file
Scanner fileScan = new Scanner(new
File("C:\Users\jamison\Desktop\GarageData.txt")) ;
// read BankAccount data from file, create objects, and add to list
while ( fileScan.hasNextLine()) // while not eof
{
String fullText = fileScan.nextLine();
// Split the acquired string into 2 based on the whitespace
String splitText = fullText.split("\s+");
// String before whitespace split
String licensePlate = splitText[0];
// String after whitespace split
String status = splitText[1];
// create Car object
Car newCar = new Car(licensePlate, status , 0) ;
// add to list
bashimGarage.addCar( newCar ) ;
}
/*
*Calculates the number of times car was temporary moved before departure
*/
bashimGarage.carDepart();
/*
*Prints list of car license plates
* Admits or declines a car to the garage
* Prints if a car departs the Garage
* When a car departs also prints the number of times it was moved
*/
bashimGarage.moveCarInGarage();
Car Class
public class Car {
private String licensePlate; // License Plate Number
private String status ; // Status: Arivved or Departed
private int moved; /* How many times the car
got moved out of the garage
*/
public Car ( String licenseNum, String carStatus , int timesMoved)
{
licensePlate = licenseNum ;
status = carStatus ;
moved = timesMoved;
}
public String getLicenseNum()
{
return licensePlate;
}
public String getStatus()
{
return status;
}
public int getTimesMoved()
{
return moved;
}
public int setTimesMoved(int times){
moved = moved + times;
return moved;
}
}
Garage Class
public class Garage {
private ArrayList<Car> list ; // a list of BankAccount objects
public int maxCars = 10; // max number of cars allowed in garage
public int currentCars = 0; // current number of cars in garage
public Garage()
{
list = new ArrayList<Car>() ;
}
public void addCar(Car newCar)
{
list.add(newCar) ; // calls "add" method of ArrayList class
}
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++; //Increments current # of cars in garage
if (currentCars <= 10) // Checks if there is space in garage
{
//Prints license plate and arrival status to screen
System.out.println("Car with license plate" +
current.getLicenseNum() + " has arrived "
+ "and been moved into the garage");
}
else
{
// Prints garage is full to screen
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--; // Decrements current # of cars in garage
/*
Prints license plate, departure status,
and number of times moved to screen
*/
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}
}
I am reading input of a file that is supposed to be like a garage and says if a car is "Arriving" or "Departing"
I am trying to write a code using an if statement that says if the status is "Departing" then the current element gets deleted the all elements in front of it add one to their "times moved parameter"
The part I am stuck on is the one where, based on the element getting deleted, all the elements in front of it in the array list add one to their "times moved" parameter.
I came up with this but it does not seem to work as when I call the 2nd method it always says 0 for times moved.
public void carDepart()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("DEPART"))
{
int pos = list.indexOf(i);
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
Second method
public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++;
if (currentCars <= 10)
{
System.out.println("Car with license plate" +
current.getLicenseNum() + " has been moved into the garage");
}
else
{
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--;
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}
}
java for-loop if-statement arraylist
add a comment |
I am new to java but have been playing with array-lists and am now stuck.
I have an array list created off a class called Car with three parameters one of which is called times moved.
Main Class
public class GarageTester {
/**
* @param args the command line arguments
*/
public static void main(String args) throws IOException{
// create Bank object
Garage bashimGarage = new Garage() ;
// create Scanner object associated with input file
Scanner fileScan = new Scanner(new
File("C:\Users\jamison\Desktop\GarageData.txt")) ;
// read BankAccount data from file, create objects, and add to list
while ( fileScan.hasNextLine()) // while not eof
{
String fullText = fileScan.nextLine();
// Split the acquired string into 2 based on the whitespace
String splitText = fullText.split("\s+");
// String before whitespace split
String licensePlate = splitText[0];
// String after whitespace split
String status = splitText[1];
// create Car object
Car newCar = new Car(licensePlate, status , 0) ;
// add to list
bashimGarage.addCar( newCar ) ;
}
/*
*Calculates the number of times car was temporary moved before departure
*/
bashimGarage.carDepart();
/*
*Prints list of car license plates
* Admits or declines a car to the garage
* Prints if a car departs the Garage
* When a car departs also prints the number of times it was moved
*/
bashimGarage.moveCarInGarage();
Car Class
public class Car {
private String licensePlate; // License Plate Number
private String status ; // Status: Arivved or Departed
private int moved; /* How many times the car
got moved out of the garage
*/
public Car ( String licenseNum, String carStatus , int timesMoved)
{
licensePlate = licenseNum ;
status = carStatus ;
moved = timesMoved;
}
public String getLicenseNum()
{
return licensePlate;
}
public String getStatus()
{
return status;
}
public int getTimesMoved()
{
return moved;
}
public int setTimesMoved(int times){
moved = moved + times;
return moved;
}
}
Garage Class
public class Garage {
private ArrayList<Car> list ; // a list of BankAccount objects
public int maxCars = 10; // max number of cars allowed in garage
public int currentCars = 0; // current number of cars in garage
public Garage()
{
list = new ArrayList<Car>() ;
}
public void addCar(Car newCar)
{
list.add(newCar) ; // calls "add" method of ArrayList class
}
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++; //Increments current # of cars in garage
if (currentCars <= 10) // Checks if there is space in garage
{
//Prints license plate and arrival status to screen
System.out.println("Car with license plate" +
current.getLicenseNum() + " has arrived "
+ "and been moved into the garage");
}
else
{
// Prints garage is full to screen
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--; // Decrements current # of cars in garage
/*
Prints license plate, departure status,
and number of times moved to screen
*/
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}
}
I am reading input of a file that is supposed to be like a garage and says if a car is "Arriving" or "Departing"
I am trying to write a code using an if statement that says if the status is "Departing" then the current element gets deleted the all elements in front of it add one to their "times moved parameter"
The part I am stuck on is the one where, based on the element getting deleted, all the elements in front of it in the array list add one to their "times moved" parameter.
I came up with this but it does not seem to work as when I call the 2nd method it always says 0 for times moved.
public void carDepart()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("DEPART"))
{
int pos = list.indexOf(i);
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
Second method
public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++;
if (currentCars <= 10)
{
System.out.println("Car with license plate" +
current.getLicenseNum() + " has been moved into the garage");
}
else
{
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--;
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}
}
java for-loop if-statement arraylist
add a comment |
I am new to java but have been playing with array-lists and am now stuck.
I have an array list created off a class called Car with three parameters one of which is called times moved.
Main Class
public class GarageTester {
/**
* @param args the command line arguments
*/
public static void main(String args) throws IOException{
// create Bank object
Garage bashimGarage = new Garage() ;
// create Scanner object associated with input file
Scanner fileScan = new Scanner(new
File("C:\Users\jamison\Desktop\GarageData.txt")) ;
// read BankAccount data from file, create objects, and add to list
while ( fileScan.hasNextLine()) // while not eof
{
String fullText = fileScan.nextLine();
// Split the acquired string into 2 based on the whitespace
String splitText = fullText.split("\s+");
// String before whitespace split
String licensePlate = splitText[0];
// String after whitespace split
String status = splitText[1];
// create Car object
Car newCar = new Car(licensePlate, status , 0) ;
// add to list
bashimGarage.addCar( newCar ) ;
}
/*
*Calculates the number of times car was temporary moved before departure
*/
bashimGarage.carDepart();
/*
*Prints list of car license plates
* Admits or declines a car to the garage
* Prints if a car departs the Garage
* When a car departs also prints the number of times it was moved
*/
bashimGarage.moveCarInGarage();
Car Class
public class Car {
private String licensePlate; // License Plate Number
private String status ; // Status: Arivved or Departed
private int moved; /* How many times the car
got moved out of the garage
*/
public Car ( String licenseNum, String carStatus , int timesMoved)
{
licensePlate = licenseNum ;
status = carStatus ;
moved = timesMoved;
}
public String getLicenseNum()
{
return licensePlate;
}
public String getStatus()
{
return status;
}
public int getTimesMoved()
{
return moved;
}
public int setTimesMoved(int times){
moved = moved + times;
return moved;
}
}
Garage Class
public class Garage {
private ArrayList<Car> list ; // a list of BankAccount objects
public int maxCars = 10; // max number of cars allowed in garage
public int currentCars = 0; // current number of cars in garage
public Garage()
{
list = new ArrayList<Car>() ;
}
public void addCar(Car newCar)
{
list.add(newCar) ; // calls "add" method of ArrayList class
}
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++; //Increments current # of cars in garage
if (currentCars <= 10) // Checks if there is space in garage
{
//Prints license plate and arrival status to screen
System.out.println("Car with license plate" +
current.getLicenseNum() + " has arrived "
+ "and been moved into the garage");
}
else
{
// Prints garage is full to screen
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--; // Decrements current # of cars in garage
/*
Prints license plate, departure status,
and number of times moved to screen
*/
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}
}
I am reading input of a file that is supposed to be like a garage and says if a car is "Arriving" or "Departing"
I am trying to write a code using an if statement that says if the status is "Departing" then the current element gets deleted the all elements in front of it add one to their "times moved parameter"
The part I am stuck on is the one where, based on the element getting deleted, all the elements in front of it in the array list add one to their "times moved" parameter.
I came up with this but it does not seem to work as when I call the 2nd method it always says 0 for times moved.
public void carDepart()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("DEPART"))
{
int pos = list.indexOf(i);
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
Second method
public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++;
if (currentCars <= 10)
{
System.out.println("Car with license plate" +
current.getLicenseNum() + " has been moved into the garage");
}
else
{
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--;
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}
}
java for-loop if-statement arraylist
I am new to java but have been playing with array-lists and am now stuck.
I have an array list created off a class called Car with three parameters one of which is called times moved.
Main Class
public class GarageTester {
/**
* @param args the command line arguments
*/
public static void main(String args) throws IOException{
// create Bank object
Garage bashimGarage = new Garage() ;
// create Scanner object associated with input file
Scanner fileScan = new Scanner(new
File("C:\Users\jamison\Desktop\GarageData.txt")) ;
// read BankAccount data from file, create objects, and add to list
while ( fileScan.hasNextLine()) // while not eof
{
String fullText = fileScan.nextLine();
// Split the acquired string into 2 based on the whitespace
String splitText = fullText.split("\s+");
// String before whitespace split
String licensePlate = splitText[0];
// String after whitespace split
String status = splitText[1];
// create Car object
Car newCar = new Car(licensePlate, status , 0) ;
// add to list
bashimGarage.addCar( newCar ) ;
}
/*
*Calculates the number of times car was temporary moved before departure
*/
bashimGarage.carDepart();
/*
*Prints list of car license plates
* Admits or declines a car to the garage
* Prints if a car departs the Garage
* When a car departs also prints the number of times it was moved
*/
bashimGarage.moveCarInGarage();
Car Class
public class Car {
private String licensePlate; // License Plate Number
private String status ; // Status: Arivved or Departed
private int moved; /* How many times the car
got moved out of the garage
*/
public Car ( String licenseNum, String carStatus , int timesMoved)
{
licensePlate = licenseNum ;
status = carStatus ;
moved = timesMoved;
}
public String getLicenseNum()
{
return licensePlate;
}
public String getStatus()
{
return status;
}
public int getTimesMoved()
{
return moved;
}
public int setTimesMoved(int times){
moved = moved + times;
return moved;
}
}
Garage Class
public class Garage {
private ArrayList<Car> list ; // a list of BankAccount objects
public int maxCars = 10; // max number of cars allowed in garage
public int currentCars = 0; // current number of cars in garage
public Garage()
{
list = new ArrayList<Car>() ;
}
public void addCar(Car newCar)
{
list.add(newCar) ; // calls "add" method of ArrayList class
}
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++; //Increments current # of cars in garage
if (currentCars <= 10) // Checks if there is space in garage
{
//Prints license plate and arrival status to screen
System.out.println("Car with license plate" +
current.getLicenseNum() + " has arrived "
+ "and been moved into the garage");
}
else
{
// Prints garage is full to screen
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--; // Decrements current # of cars in garage
/*
Prints license plate, departure status,
and number of times moved to screen
*/
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}
}
I am reading input of a file that is supposed to be like a garage and says if a car is "Arriving" or "Departing"
I am trying to write a code using an if statement that says if the status is "Departing" then the current element gets deleted the all elements in front of it add one to their "times moved parameter"
The part I am stuck on is the one where, based on the element getting deleted, all the elements in front of it in the array list add one to their "times moved" parameter.
I came up with this but it does not seem to work as when I call the 2nd method it always says 0 for times moved.
public void carDepart()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("DEPART"))
{
int pos = list.indexOf(i);
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
Second method
public void moveCarInGarage()
{
for ( int i = 0 ; i < list.size() ; i++ )
{
Car current = list.get( i ) ; // get next car
if (current.getStatus().equals("ARRIVE"))
{
currentCars++;
if (currentCars <= 10)
{
System.out.println("Car with license plate" +
current.getLicenseNum() + " has been moved into the garage");
}
else
{
System.out.println("The garage is full at this " +
"time so come back later");
}
}
else
{
currentCars--;
System.out.println("Car with license plate" +
current.getLicenseNum() + " is departing and has been moved "
+ current.getTimesMoved() + " times" );
}
}
}
java for-loop if-statement arraylist
java for-loop if-statement arraylist
edited Jan 20 at 4:53
Arthur
asked Jan 20 at 3:57
ArthurArthur
176
176
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
First method, line 8.
Why are you trying to extract pos
when you already have it in i
. int pos = list.indexOf(i);
will give -1.
Also, in this loop
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
You are always pointing to the same element in the arraylist.
Instead, you may want to program it like the following:
for ( int j = 0; j<i; j++)
{
Car car = list.get(j);
car.setTimesMoved(1 + car.getTimesMoved());
}
My logic was that when it first hits an element with the status depart it gets its index and then scans all the elements previous to that index and increments timesMoved by 1. I am not 100% sure what you mean by extract post when you already have it as I never tried to get the index before? Sorry if I sound abit lost
– Arthur
Jan 20 at 4:25
I'll add an edit. Gimme 1 min
– Aditya Gupta
Jan 20 at 4:29
Oh. So you want to increment the previoys cars. I'll modify.
– Aditya Gupta
Jan 20 at 4:32
By extracting I meant that since you are iterating using loop variablei
, wonti
be the current index. Ou dont need to explicitly extract position of current index.
– Aditya Gupta
Jan 20 at 4:45
I understand now Sand provided a good example but even with the edited code it still gives 0 for some reason
– Arthur
Jan 20 at 4:47
add a comment |
You had below issues in your method,
- First you were getting a index of an integer instead of the object.
- Your inner for loop condition was wrong.
- You were always increment the values of the current object instead of
the previous ones.
I have corrected them in your method. Use below one,
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
/* You can remove below line and replace pos with i in your inner loop.
Since the current object position will be same as i */
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
When running the program it still says moved 0 times after running the 2nd method. Let me edit the code to include more information
– Arthur
Jan 20 at 4:34
I added more code as I am still getting 0 and am guessing it might be a bug somewhere else now
– Arthur
Jan 20 at 4:46
Can you show me your main method also?
– Sand
Jan 20 at 4:49
Main method added
– Arthur
Jan 20 at 4:53
Well its working correctly. If you replace the first print insidemoveCarInGarage
method with thisSystem.out.println("Car with license plate" + current.getLicenseNum() + " has moved " + current.getTimesMoved() + " times");
you should see its printing the times correctly. Maybe you need to think about your conditions?
– Sand
Jan 20 at 5:05
|
show 1 more comment
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54273457%2fincrementing-arrayelement-parameters-based-on-previous-elements%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
First method, line 8.
Why are you trying to extract pos
when you already have it in i
. int pos = list.indexOf(i);
will give -1.
Also, in this loop
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
You are always pointing to the same element in the arraylist.
Instead, you may want to program it like the following:
for ( int j = 0; j<i; j++)
{
Car car = list.get(j);
car.setTimesMoved(1 + car.getTimesMoved());
}
My logic was that when it first hits an element with the status depart it gets its index and then scans all the elements previous to that index and increments timesMoved by 1. I am not 100% sure what you mean by extract post when you already have it as I never tried to get the index before? Sorry if I sound abit lost
– Arthur
Jan 20 at 4:25
I'll add an edit. Gimme 1 min
– Aditya Gupta
Jan 20 at 4:29
Oh. So you want to increment the previoys cars. I'll modify.
– Aditya Gupta
Jan 20 at 4:32
By extracting I meant that since you are iterating using loop variablei
, wonti
be the current index. Ou dont need to explicitly extract position of current index.
– Aditya Gupta
Jan 20 at 4:45
I understand now Sand provided a good example but even with the edited code it still gives 0 for some reason
– Arthur
Jan 20 at 4:47
add a comment |
First method, line 8.
Why are you trying to extract pos
when you already have it in i
. int pos = list.indexOf(i);
will give -1.
Also, in this loop
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
You are always pointing to the same element in the arraylist.
Instead, you may want to program it like the following:
for ( int j = 0; j<i; j++)
{
Car car = list.get(j);
car.setTimesMoved(1 + car.getTimesMoved());
}
My logic was that when it first hits an element with the status depart it gets its index and then scans all the elements previous to that index and increments timesMoved by 1. I am not 100% sure what you mean by extract post when you already have it as I never tried to get the index before? Sorry if I sound abit lost
– Arthur
Jan 20 at 4:25
I'll add an edit. Gimme 1 min
– Aditya Gupta
Jan 20 at 4:29
Oh. So you want to increment the previoys cars. I'll modify.
– Aditya Gupta
Jan 20 at 4:32
By extracting I meant that since you are iterating using loop variablei
, wonti
be the current index. Ou dont need to explicitly extract position of current index.
– Aditya Gupta
Jan 20 at 4:45
I understand now Sand provided a good example but even with the edited code it still gives 0 for some reason
– Arthur
Jan 20 at 4:47
add a comment |
First method, line 8.
Why are you trying to extract pos
when you already have it in i
. int pos = list.indexOf(i);
will give -1.
Also, in this loop
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
You are always pointing to the same element in the arraylist.
Instead, you may want to program it like the following:
for ( int j = 0; j<i; j++)
{
Car car = list.get(j);
car.setTimesMoved(1 + car.getTimesMoved());
}
First method, line 8.
Why are you trying to extract pos
when you already have it in i
. int pos = list.indexOf(i);
will give -1.
Also, in this loop
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
You are always pointing to the same element in the arraylist.
Instead, you may want to program it like the following:
for ( int j = 0; j<i; j++)
{
Car car = list.get(j);
car.setTimesMoved(1 + car.getTimesMoved());
}
edited Jan 20 at 4:31
answered Jan 20 at 4:22
Aditya GuptaAditya Gupta
7851821
7851821
My logic was that when it first hits an element with the status depart it gets its index and then scans all the elements previous to that index and increments timesMoved by 1. I am not 100% sure what you mean by extract post when you already have it as I never tried to get the index before? Sorry if I sound abit lost
– Arthur
Jan 20 at 4:25
I'll add an edit. Gimme 1 min
– Aditya Gupta
Jan 20 at 4:29
Oh. So you want to increment the previoys cars. I'll modify.
– Aditya Gupta
Jan 20 at 4:32
By extracting I meant that since you are iterating using loop variablei
, wonti
be the current index. Ou dont need to explicitly extract position of current index.
– Aditya Gupta
Jan 20 at 4:45
I understand now Sand provided a good example but even with the edited code it still gives 0 for some reason
– Arthur
Jan 20 at 4:47
add a comment |
My logic was that when it first hits an element with the status depart it gets its index and then scans all the elements previous to that index and increments timesMoved by 1. I am not 100% sure what you mean by extract post when you already have it as I never tried to get the index before? Sorry if I sound abit lost
– Arthur
Jan 20 at 4:25
I'll add an edit. Gimme 1 min
– Aditya Gupta
Jan 20 at 4:29
Oh. So you want to increment the previoys cars. I'll modify.
– Aditya Gupta
Jan 20 at 4:32
By extracting I meant that since you are iterating using loop variablei
, wonti
be the current index. Ou dont need to explicitly extract position of current index.
– Aditya Gupta
Jan 20 at 4:45
I understand now Sand provided a good example but even with the edited code it still gives 0 for some reason
– Arthur
Jan 20 at 4:47
My logic was that when it first hits an element with the status depart it gets its index and then scans all the elements previous to that index and increments timesMoved by 1. I am not 100% sure what you mean by extract post when you already have it as I never tried to get the index before? Sorry if I sound abit lost
– Arthur
Jan 20 at 4:25
My logic was that when it first hits an element with the status depart it gets its index and then scans all the elements previous to that index and increments timesMoved by 1. I am not 100% sure what you mean by extract post when you already have it as I never tried to get the index before? Sorry if I sound abit lost
– Arthur
Jan 20 at 4:25
I'll add an edit. Gimme 1 min
– Aditya Gupta
Jan 20 at 4:29
I'll add an edit. Gimme 1 min
– Aditya Gupta
Jan 20 at 4:29
Oh. So you want to increment the previoys cars. I'll modify.
– Aditya Gupta
Jan 20 at 4:32
Oh. So you want to increment the previoys cars. I'll modify.
– Aditya Gupta
Jan 20 at 4:32
By extracting I meant that since you are iterating using loop variable
i
, wont i
be the current index. Ou dont need to explicitly extract position of current index.– Aditya Gupta
Jan 20 at 4:45
By extracting I meant that since you are iterating using loop variable
i
, wont i
be the current index. Ou dont need to explicitly extract position of current index.– Aditya Gupta
Jan 20 at 4:45
I understand now Sand provided a good example but even with the edited code it still gives 0 for some reason
– Arthur
Jan 20 at 4:47
I understand now Sand provided a good example but even with the edited code it still gives 0 for some reason
– Arthur
Jan 20 at 4:47
add a comment |
You had below issues in your method,
- First you were getting a index of an integer instead of the object.
- Your inner for loop condition was wrong.
- You were always increment the values of the current object instead of
the previous ones.
I have corrected them in your method. Use below one,
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
/* You can remove below line and replace pos with i in your inner loop.
Since the current object position will be same as i */
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
When running the program it still says moved 0 times after running the 2nd method. Let me edit the code to include more information
– Arthur
Jan 20 at 4:34
I added more code as I am still getting 0 and am guessing it might be a bug somewhere else now
– Arthur
Jan 20 at 4:46
Can you show me your main method also?
– Sand
Jan 20 at 4:49
Main method added
– Arthur
Jan 20 at 4:53
Well its working correctly. If you replace the first print insidemoveCarInGarage
method with thisSystem.out.println("Car with license plate" + current.getLicenseNum() + " has moved " + current.getTimesMoved() + " times");
you should see its printing the times correctly. Maybe you need to think about your conditions?
– Sand
Jan 20 at 5:05
|
show 1 more comment
You had below issues in your method,
- First you were getting a index of an integer instead of the object.
- Your inner for loop condition was wrong.
- You were always increment the values of the current object instead of
the previous ones.
I have corrected them in your method. Use below one,
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
/* You can remove below line and replace pos with i in your inner loop.
Since the current object position will be same as i */
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
When running the program it still says moved 0 times after running the 2nd method. Let me edit the code to include more information
– Arthur
Jan 20 at 4:34
I added more code as I am still getting 0 and am guessing it might be a bug somewhere else now
– Arthur
Jan 20 at 4:46
Can you show me your main method also?
– Sand
Jan 20 at 4:49
Main method added
– Arthur
Jan 20 at 4:53
Well its working correctly. If you replace the first print insidemoveCarInGarage
method with thisSystem.out.println("Car with license plate" + current.getLicenseNum() + " has moved " + current.getTimesMoved() + " times");
you should see its printing the times correctly. Maybe you need to think about your conditions?
– Sand
Jan 20 at 5:05
|
show 1 more comment
You had below issues in your method,
- First you were getting a index of an integer instead of the object.
- Your inner for loop condition was wrong.
- You were always increment the values of the current object instead of
the previous ones.
I have corrected them in your method. Use below one,
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
/* You can remove below line and replace pos with i in your inner loop.
Since the current object position will be same as i */
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
You had below issues in your method,
- First you were getting a index of an integer instead of the object.
- Your inner for loop condition was wrong.
- You were always increment the values of the current object instead of
the previous ones.
I have corrected them in your method. Use below one,
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
/* You can remove below line and replace pos with i in your inner loop.
Since the current object position will be same as i */
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
edited Jan 20 at 4:38
answered Jan 20 at 4:31
SandSand
1,6522521
1,6522521
When running the program it still says moved 0 times after running the 2nd method. Let me edit the code to include more information
– Arthur
Jan 20 at 4:34
I added more code as I am still getting 0 and am guessing it might be a bug somewhere else now
– Arthur
Jan 20 at 4:46
Can you show me your main method also?
– Sand
Jan 20 at 4:49
Main method added
– Arthur
Jan 20 at 4:53
Well its working correctly. If you replace the first print insidemoveCarInGarage
method with thisSystem.out.println("Car with license plate" + current.getLicenseNum() + " has moved " + current.getTimesMoved() + " times");
you should see its printing the times correctly. Maybe you need to think about your conditions?
– Sand
Jan 20 at 5:05
|
show 1 more comment
When running the program it still says moved 0 times after running the 2nd method. Let me edit the code to include more information
– Arthur
Jan 20 at 4:34
I added more code as I am still getting 0 and am guessing it might be a bug somewhere else now
– Arthur
Jan 20 at 4:46
Can you show me your main method also?
– Sand
Jan 20 at 4:49
Main method added
– Arthur
Jan 20 at 4:53
Well its working correctly. If you replace the first print insidemoveCarInGarage
method with thisSystem.out.println("Car with license plate" + current.getLicenseNum() + " has moved " + current.getTimesMoved() + " times");
you should see its printing the times correctly. Maybe you need to think about your conditions?
– Sand
Jan 20 at 5:05
When running the program it still says moved 0 times after running the 2nd method. Let me edit the code to include more information
– Arthur
Jan 20 at 4:34
When running the program it still says moved 0 times after running the 2nd method. Let me edit the code to include more information
– Arthur
Jan 20 at 4:34
I added more code as I am still getting 0 and am guessing it might be a bug somewhere else now
– Arthur
Jan 20 at 4:46
I added more code as I am still getting 0 and am guessing it might be a bug somewhere else now
– Arthur
Jan 20 at 4:46
Can you show me your main method also?
– Sand
Jan 20 at 4:49
Can you show me your main method also?
– Sand
Jan 20 at 4:49
Main method added
– Arthur
Jan 20 at 4:53
Main method added
– Arthur
Jan 20 at 4:53
Well its working correctly. If you replace the first print inside
moveCarInGarage
method with this System.out.println("Car with license plate" + current.getLicenseNum() + " has moved " + current.getTimesMoved() + " times");
you should see its printing the times correctly. Maybe you need to think about your conditions?– Sand
Jan 20 at 5:05
Well its working correctly. If you replace the first print inside
moveCarInGarage
method with this System.out.println("Car with license plate" + current.getLicenseNum() + " has moved " + current.getTimesMoved() + " times");
you should see its printing the times correctly. Maybe you need to think about your conditions?– Sand
Jan 20 at 5:05
|
show 1 more comment
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54273457%2fincrementing-arrayelement-parameters-based-on-previous-elements%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown