Numbers

Hi all,

Please can you help me with following:

I want to change program so that user will choose the size of numberA and numberB, the numberA can be different to numberB

import java.util.*;

publicclass Numbers

{

static Scanner console =new Scanner(System.in);

staticfinalint ARRAY_SIZE=20;

publicstaticvoid main(String[] args)

{

int[] numberOne =newint[ARRAY_SIZE];

int[] numberTwo =newint[ARRAY_SIZE];

System.out.print("numberOne elements: ");

printArray(numberOne, numberOne.length);

System.out.println();

System.out.print("Enter " + numberOne.length +" integers: ");

fillArray(numberOne, numberOne.length);

System.out.println();

System.out.println("After filling "+"numberOne, the elements are:" +"\n");

printArray(numberOne, numberOne.length);

System.out.println("\n");

System.out.println("Sum of the "+"elements of listA is: "+sumArray(numberOne, numberOne.length)+"\n");

System.out.println("Location of "+"the largest element in "+"listA is: "+(indexLargestElement(numberOne,numberOne.length)+1)+"\n");

System.out.println("Largest element in "+"listA is: "+numberOne[indexLargestElement(numberOne, numberOne.length)]+"\n");

copyArray(numberOne, numberOne, numberOne.length);

System.out.print("Line 16: After copying the "+"elements of numberOne into listB\n"+"listB elements are: ");

printArray(numberOne, numberOne.length);

System.out.println();

}

//Method to input data and store in an array

publicstaticvoid fillArray(int[] list,int noOfElements)

{

int index;

for(index = 0; index < noOfElements; index++)

{

list[index] = console.nextInt();

}

}

//Method to print the array

publicstaticvoid printArray(int[] list,int noOfElements)

{

int index;

for(index = 0; index < noOfElements; index++)

System.out.print(list[index] +" ");

}

//Method to find and return the sum of an array

publicstaticint sumArray(int[] list,int noOfElements)

{

int index;

int sum = 0;

for(index = 0; index < noOfElements; index++)

sum = sum + list[index];

return sum;

}

//Method to find and return the index of the

//largest element of an array

publicstaticint indexLargestElement(int[] list,int noOfElements)

{

int index;

int maxIndex = 0;//Assume first element is the largest

for(index = 1; index < noOfElements; index++)

if(list[maxIndex] < list[index])

maxIndex = index;

return maxIndex;

}

//Method to copy one array into another array

publicstaticvoid copyArray(int[] list1,int[] list2,

int noOfElements)

{

int index;

for(index = 0; index < noOfElements; index++)

list2[index] = list1[index];

}

}

If I try following, program gets in endless loop:

import java.util.*;

publicclass Numers2

{

static Scanner console =new Scanner(System.in);

staticint[] numberOne;

publicstaticvoid main(String[] args)

{

int size = console.nextInt();

numberOne =newint[size];

int i;

for (i=0; i<numberOne.length; i++)

{

System.out.print("listA "+i+" = ");

numberOne[i] = console.nextInt();

}

System.out.print("Enter " + numberOne +" integers: ");

System.out.println();

}

}

>

[7420 byte] By [RavenJavena] at [2007-11-27 3:59:18]
# 1

public static void main(String[] args) {

int numberOneSize = ARRAY_SIZE,

numberTwoSize = ARRAY_SIZE;

switch ( args.length) {

case 1:

numberOneSize = Integer.parseInt(argv[0]);

numberTwoSize = Integer.parseInt(argv[0]);

break;

case 2:

numberOneSize = Integer.parseInt(argv[0]);

numberTwoSize = Integer.parseInt(argv[1]);

break;

default:

break;

}

int[] numberOne = new int[numberOneSize];

int[] numberTwo = new int[numberTwoSize];

abillconsla at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 2
Tks for replay but I'm getting error :cannot find symbol - variable argvRJ
RavenJavena at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 3
That's the 'args' in the main method. I always code argv in my own code, and missed that your code has it as args. Replace argv with args whereever it appears in the snippet I provided.
abillconsla at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 4

I changed argv args, asI want user to determine length of array I changed

static final int ARRAY_SIZE=10;

to

static int ARRAY_SIZE;

now I have error :

array index out of bound section 0

in line:

System.out.println("Largest element in "+"listA is: "+listA[indexLargestElement(listA, listA.length)]+"\n");

Tks RJ

RavenJavena at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 5

I changed argv args, asI want user to determine length of array I changed

static final int ARRAY_SIZE=10;

to

static int ARRAY_SIZE;

You did not need to do that ... have another look at the code I posted. The ARRAY_SIZE does not need to change, it is only accessed not changed.

As to your array out of bounds problem, do prints of your listA size() and different arrays in pieces and see where you are going wrong.

Since you did not show that piece of code in your original posting and I don't know where it fits in, I can't tell you more.

abillconsla at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 6

If I leave

static final int ARRAY_SIZE=10;

as it is, program asks user to enter ten numbers.

I want that user determine how many numbers they will enter(length of array)

And they can decide to determine length of numberOne to 5 numbers

and numberTwo to 8 numbers.

Tks RJ

RavenJavena at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 7

No no no ... let's go back and take another look at this code.

public static void main(String[] args) { // These are not asked for, they are specified on the command line.

// This process will now get run as follows:

// java MyClassWhateverItIsCalled [<array size one>] [<array size two>]

int numberOneSize = ARRAY_SIZE, // these are now defaults

numberTwoSize = ARRAY_SIZE;

switch ( args.length) {

case 1: // If only one is entered

numberOneSize = Integer.parseInt(argv[0]);

numberTwoSize = Integer.parseInt(argv[0]);

break;

case 2: // If two are entered.

numberOneSize = Integer.parseInt(argv[0]);

numberTwoSize = Integer.parseInt(argv[1]);

break;

default: // If none are entered

break;

}

int[] numberOne = new int[numberOneSize];

int[] numberTwo = new int[numberTwoSize];

So you run this like:

java MyClass WhateverItIsCalled 5 7

~Bill

Thanks for dukes.

abillconsla at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 8
When I'm running program with BlueJ :first line gives me :numberOne elements : 0 0 0 0 0 0 0 0 0 0 0 (10)second :Enter 10 integers: ( and program waits for 10 entries)Tks RJ
RavenJavena at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 9

Is there a command prompt with BlueJ? If not than this method will not work. However, do this instead:

public static void main(String[] args) {

// int[] numberOne = new int[ARRAY_SIZE];

// int[] numberTwo = new int[ARRAY_SIZE];

int numberOneSize = ARRAY_SIZE,

numberTwoSize = ARRAY_SIZE;

System.out.println("Please enter the size of Array one: ");

if ( console.hasNextInt() )

numberOneSize = console.nextInt();

System.out.println("Please enter the size of Array two: ");

if ( console.hasNextInt() )

numberTwoSize = console.nextInt();

int[] numberOne = new int[numberOneSize];

int[] numberTwo = new int[numberTwoSize];

System.out.print("numberOne elements: ");

printArray(numberOne, numberOne.length);

System.out.println();

abillconsla at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 10
Tats the one it works now, tks for help Bill
RavenJavena at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 11
System.out.println("After filling "+ "numberOne, the elements are:" + "\n");vsSystem.out.println("After filling numberOne, the elements are: \n");
floundera at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 12
And the winner is :> System.out.println("After filling numberOne, the elements are: \n");Tks RJ
RavenJavena at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...
# 13
Welcome.
abillconsla at 2007-7-12 9:03:49 > top of Java-index,Java Essentials,New To Java...