Results 1 to 20 of 23
- 01-02-2009, 10:09 PM #1
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
[SOLVED] Errors with project: specify array size by the value in first command-line a
I need assistance with a homework assignment. The project was to rewrite an existing textbook example so that the array size is specified by the value in the first command-line arg. Here is the code. It giving errors for lines 21, 25, 28, 29, 32, but I can't figure out why. Can someone please help me debug the cause of the errors?
Java Code:import java.util.Scanner; // program uses class Scanner public class InitArrayNew { public static void main( String args[] ) { int array[]; // declare array named array int inputNumber = 0; // number value entered array = new int[ inputNumber ]; // create the space for array // prompt for user to input a number for the array size System.out.println( "Please enter a number for the array size: " ); int num = input.nextInt(); // validate the input if (inputNumber > 0) array[length] = array[num]; } else { array[length] = array[10]; } System.out.printf( "%s%8s\n", "Index", "Value" ); // column headings // output each array element's value for ( int counter = 0; counter < array.length; counter++ ) System.out.printf( "%5d%8d\n", counter, array[ counter ] ); } // end main } // end class InitArrayNew
- 01-02-2009, 10:41 PM #2
observations...
Some observations about your code:
- Don't call your array "array". Call it something else: "myArray" or "myHeadAche" or... etc.
- You are working with arrays (which are different from arraylists). When you create an array and define it's size, it has to stay that size. For example, if you create/define your array with 5 elements and you try to access the 6th element, your program will send you a outOfBounds nastygram.
- You can't create an array with zero elements (black hole effect: program implodes at compile time).
- Therefore, you have to define the size of your array after getting the user's array size.
- You can't output the array's elements values if you haven't input the elements. You need a "for" loop to input the array elements.
Here's a good link about arrays:
Arrays (The Java™ Tutorials > Learning the Java Language > Language Basics)
Luck,
CJSLChris S.
Difficult? This is Mission Impossible, not Mission Difficult. Difficult should be easy.
- 01-03-2009, 04:50 AM #3
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
Thanks for the input. Just to clarify, I didn't name the array "array". We were given a pre-existing template that already had the array named "array" with an array size of 10, and my homework was to rewrite the existing file to make the array size be specified by the first command-line argument but if no command-line arg is supplied, to leave 10 as the default size. Just an FYI, the original template I was given is below.
Java Code:public class InitArray { public static void main( String args[] ) { int array[]; // declare array named array array = new int[ 10 ]; // create the space for array System.out.printf( "%s%8s\n", "Index", "Value" ); // column headings // output each array element's value for ( int counter = 0; counter < array.length; counter++ ) System.out.printf( "%5d%8d\n", counter, array[ counter ] ); } // end main } // end class InitArray
-
regardless of the name of your array variable, your code is all wrong:
1) you never use the command line arguments (args) passed to your main method. That's where the number should be passed.
2) You're using an object, input, that's never declared. what is this animal? where did it come from? how is it supposed to get input?
2) You're using a variable, length, that is never declared. Again, what is this, where did it come from?
You can't just make up variables and methods and hope that they'll work. Programming doesn't work that way.
Your solution is to use the args passed to your main method, check to see that an arg was in fact passed (that the array length is > 0), convert the passed String to an int (using a method from the Integer class), and then creating your array with this result.Last edited by Fubarable; 01-03-2009 at 04:59 AM.
- 01-03-2009, 11:27 AM #5
Member
- Join Date
- Dec 2008
- Location
- Italy
- Posts
- 79
- Rep Power
- 0
@jhrh95
Originally Posted by Fubarable
It seems you are very young and new to Java. So maybe you'll find it difficult to understand Fubarable's answer. The coded-one is:
If you can't understand that, feel free to ask questionsJava Code:int myLength = Integer.parseInt(args[0]);
- 01-04-2009, 07:28 PM #6
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
Thanks for the help, and I do have questions. The homework assignment was to rewrite the original code so that the array size is specified by the first command-line arg, but if none was given to default the size to 10. So, I was originally prompting for user input to specify the size of the array they wanted, but I think that I just was confused on what I needed to do... and I'm still a bit unclear. I started all over, thinking it would help, but I still don't entirely get it. The output of the original file is below as well as my new code. Can someone please help steer me in the right direction?
Original file output:
Index Value
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
My new code:
Java Code:public class InitArrayNew2 { public static void main( String args[] ) { // check number of command-line arguments if (args.length !=10 ) { I'm not sure what to do here } else { // get array size from first command-line argument int arrayLength = Integer.parseInt( args[ 0 ]); int array[] = new int[ arrayLength ]; // create the space for array // get initial value and increment from command-line arguments int initialValue = Integer.parseInt( args[ 1 ]); int increment = Integer.parseInt( args[ 2 ] ); } System.out.printf( "%s%8s\n", "Index", "Value" ); // column headings // output each array element's value for ( int counter = 0; counter < array.length; counter++ ) System.out.printf( "%5d%8d\n", counter, array[ counter ] ); } // end main } // end class InitArrayNew2Last edited by jhrh95; 01-04-2009 at 07:51 PM.
- 01-04-2009, 08:19 PM #7
First you should check to see if the user specified any arguments...
Now... you have to output each array element value... how can you do that if you haven't put any values in the array? As you're example shows, it contains nothing (printing zeros).Java Code:if (args.length == 0) { set default to 10; } else { get the amount that the user specified }
First read the link that I put in my previous post. Once you understand how to put values into an array, with a "for" loop, populate the array with values (any values). Then, you can print out the array elements like you currently are.
Luck,
CJSLChris S.
Difficult? This is Mission Impossible, not Mission Difficult. Difficult should be easy.
- 01-04-2009, 09:06 PM #8
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
For my homework, I don't need to do anything with the element values; they can stay and print out as zero. I just need to make the array size be what the first command line argument is or default it to 0. I'll review the array tutorial again.
- 01-04-2009, 09:13 PM #9
Member
- Join Date
- Dec 2008
- Location
- Italy
- Posts
- 79
- Rep Power
- 0
If you don't need the array elements, why:
I can't understandJava Code:if (args.length !=10 )
- 01-04-2009, 09:25 PM #10
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
There are 10 items in the Index (0 - 9), but the values (elements) are all 0 and can remain zero is all I was trying to communicate.
- 01-04-2009, 09:29 PM #11
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
OK, my revised code is below but I'm still getting an error on line 21: (InitArrayNew2.java:21: cannot find symbol
symbol : variable length
location: classInitArrayNew2
a[length] = a[10];
Java Code:import java.util.Scanner; // program uses class Scanner public class InitArrayNew2 { public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in); // declarations int size = input.nextInt(); int a[] = new int [size]; int inputNumber = 0; // number value entered // check number of command-line arguments if (args.length == 0 ) { a[length] = a[10]; } else { // prompt for user to input a number for the array size System.out.println( "Please enter a number for the array size: " ); // array = new int[ input.nextInt() ]; // create the space for array and input number // get array size from first command-line argument int aLength = Integer.parseInt( args[ 0 ]); // int a[] = new int[ arrayLength ]; // create the space for array } for(int i = 0; i <a.length; i++) { a[i] = input.nextInt(); } System.out.printf( "%s%8s\n", "Index", "Value" ); // column headings // output each array element's value for ( int counter = 0; counter < a.length; counter++ ) System.out.printf( "%5d%8d\n", counter, a[ counter ] ); } // end main } // end class InitArrayNew2
- 01-04-2009, 09:31 PM #12
OK...
If you don't need to print any array elements, then the output in your first post is OK, assuming that the user didn't specify any command line arguments. All you have to do is find out if the user specified any arguments and my previous post has the solution for that.
Luck,
CJSLChris S.
Difficult? This is Mission Impossible, not Mission Difficult. Difficult should be easy.
- 01-04-2009, 09:41 PM #13
Whoa...
You just did a NO-NO !!! Why in the world did you crosspost ???
New To Java - Need help with array project
You're not supposed to do that. It irritates the hell out of people trying to help you (like me). It's also a great way to not get any help.
CJSLChris S.
Difficult? This is Mission Impossible, not Mission Difficult. Difficult should be easy.
- 01-04-2009, 09:45 PM #14
No, that is not any good. Just assign 10 to the aLength variable.Java Code:a[length] = a[10];
With that change, your code work OK.
CJSLChris S.
Difficult? This is Mission Impossible, not Mission Difficult. Difficult should be easy.
- 01-04-2009, 09:49 PM #15
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
I wasn't trying to double post. I was trying to edit my original and change the name/verbiage. Did I mess something up?
-
cross-posting is when you post the same question in another forum, and it can frustrate anyone who tries to help you only to find out later that the same answer was given hours ago in a cross-posted thread. No one likes wasting their time, especially a volunteer. The polite thing to do would be to not do this, but if you feel that you absolutely must, to at least provide links in both cross-posts to each other.
- 01-04-2009, 10:04 PM #17
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
One last question related to your comment above: Can you direct me to where in the FAQ/Bulletin FAQ is references cross-posts? I've not seen a reference anywhere.
- 01-04-2009, 10:05 PM #18
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
Thanks for the info. Sorry. I thought it was completely different groups of people and wasn't trying to give anyone any headaches.
-
No problem. Doing it once or twice is OK, but many who do it multiple times get ignored.
- 01-04-2009, 10:25 PM #20
Member
- Join Date
- Jan 2009
- Posts
- 19
- Rep Power
- 0
Similar Threads
-
Command Line Arguments
By Nakira in forum NetBeansReplies: 10Last Post: 02-04-2010, 03:45 PM -
JDBC Driver errors in command line but not NetBeans
By MeathUltra in forum JDBCReplies: 7Last Post: 12-08-2008, 06:20 PM -
Java command line
By agouzoul in forum New To JavaReplies: 2Last Post: 04-02-2008, 12:12 PM -
Exporting from the command line
By o1121 in forum EclipseReplies: 1Last Post: 08-09-2007, 07:29 PM -
Unable to execute command line command in java
By LordSM in forum New To JavaReplies: 1Last Post: 08-08-2007, 12:23 AM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks