Hi,
If you don't know in advance how many numbers will be entered, you need to keep track of them. I've kept the int i for incrementing each time the user enters a number.
Then I've modified your sort and median methods slightly to take the i value as a parameter, and to only sort those elements which have been filled in your array, and then to only calculate the median on those values. Then only those values are printed. I left your methods in commented out for comparison.
If you're not meant to be using a fixed size array at all then you'll need another solution, but I guessed this was what you were going for. If you don't get anything, just post again.
CODE
import java.util.Scanner;
public class SortArrayMedian
{
public static void main(String args[])
{
Scanner inp = new Scanner(System.in);
System.out.println("Please enter as many integers as you want.");
System.out.println("Enter 0 to end.");
int i=0;
int x[] = new int[100];
if (x != null) {
x[i] = inp.nextInt();
while (x[i] != 0){
System.out.println("Added " + x[i] + " to position: " + i);
i++;
if (i >=100)
//if(x[i] == 0)
break;
x[i] = inp.nextInt();
}
SortArrayMedian S = new SortArrayMedian();
//S.bubbleSort (x);
S.bubbleSortSetLength(x, i);
System.out.print("Sorted list of integers is ");
for (int j = 0; j < i; ++j)
System.out.print(" " + x[j]);
// System.out.print("\nThe median is " + S.findMedian(x));
System.out.print("\nThe median is " + S.findMedianSetLength(x, i));
System.out.println("\n");
}
else
System.out.println("Insufficient heap memory");
}
/*public void bubbleSort(int a[]) {
int j, k;
// for (j = 0; j < 99; j++)
for (j = 0; j < a.length-1; j++)
// for (k = 0; k < 99; ++k)
for (k = 0; k < a.length-1; k++)
if (a[k] > a[k+1]) {
int temp = a[k];
a[k] = a[k+1];
a[k+1] = temp;
}
}*/
public void bubbleSortSetLength(int a[], int i) {
int j, k;
// for (j = 0; j < 99; j++)
for (j = 0; j < i-1; j++)
// for (k = 0; k < 99; ++k)
for (k = 0; k < i-1; k++)
if (a[k] > a[k+1]) {
int temp = a[k];
a[k] = a[k+1];
a[k+1] = temp;
}
}
public int findMedianSetLength( int b[], int i){
int result = i % 2;
int median = 0;
if (result == 0) {
int rightNumber = i / 2;
int leftNumber = rightNumber - 1;
median = (b[rightNumber] + b[leftNumber]) / 2;
}
else {
int rightNumber = i / 2;
median = b[rightNumber];
}
return median;
}
/*public int findMedian( int b[]){
int result = b.length % 2;
int median = 0;
if (result == 0) {
int rightNumber = b.length / 2;
int leftNumber = rightNumber - 1;
median = (b[rightNumber] + b[leftNumber]) / 2;
}
else {
int rightNumber = b.length / 2;
median = b[rightNumber];
}
return median;
}*/
}