Where double mean and int median are defined previously in the program without any troubles.
I'm getting weird results when running my program in the compiler. In the examples (ie, NOT CODE :) ) below of my results, variable(number) will mean that I used said variable that had a value of said number.
Any idea what might be causing this? Any help would be greatly appreciated! :D
Full code in case you want more:
(*Note: is there a way to hide this long snippet? Perhaps a "spoiler" button?)
import java.util.Random;
import java.util.Scanner;
public class Vesuvius {
public static void main(String [] args){
Scanner input = new Scanner(System.in);
//User defines parameters
System.out.println("Definet of integers from x to y inclusive from which random integers shall be generated, and define how many integers shall be generated.");
System.out.println("Define);
int x = input.nextInt();
System.out.println("Define);
int y = input.nextInt();
System.out.println("How integers should be generated?");
int intsgenerated = input.nextInt();
//Generates an array "set" of random numbers based on the user's specifications.
int temp1;
int[] set = new int[intsgenerated];
Random generator = new Random();
for(int i=0; i<intsgenerated; i++){
temp1 = generator.nextInt(y-x)+x;
set[i] = temp1;
}
//Selection sort to sort the random numbers of array set in ascending order
for(int i=0; i<set.length-1; i++){
for(int j=i+1; j<set.length; j++){
if(set[i] > set[j]){
int temp = set[i];
set[i] = set[j];
set[j] = temp;
}
}
}
//Calculates the mean of the set
double mean;
int temp2 = 0;
for(int i=0; i<set.length; i++){
temp2 = temp2 + set[i];
}
mean = temp2/set.length;
System.out.println("The is " + mean);
//Finds maximum value of the set
int max = 0;
for(int i=0; i<set.length; i++){ //Finds and prints maximum value.
if(set[i] > max){
max = set[i];
}
}
//Calculates the median of the set
int median;
median = set.length/2;
System.out.println("Thean is " + set[median]);
//Calculates the mode with the highest value. ie, if both 5 and 9 are modes of the set, only 9 will be returned.
int mode = 0;
int[] tally = new int[max+1];
int q = 0;
for(int i=0; i<tally.length; i++){
tally[i] = 0;
}for(int i=0; i<set.length; i++){
q = set[i];
tally[q]++;
}for(int i=0; i<tally.length; i++){
if(tally[i] >= tally[mode]){
mode = i;
}}
if(tally[mode] == 1){
System.out.println("Thereo mode in this set.");
}else{
System.out.println("The of the set is " + mode + ".");
}
double difmeanmedian = mean - median; //this line doesn't behave well
int difmedianmode = median - mode;
double difmeanmode = mean - mode; //nor does this line
System.out.println("difmeanmedian difmeanmedian);
System.out.println("difmedianmode difmedianmode);
System.out.println("difmeanmode difmeanmode);
//----------------------------------------------------------------------------//
//Prints list of numbers
System.out.println("The of numbers generated is: ");
for(int i=0; i<intsgenerated; i++){
System.out.print(set[i] + ", ");
}
}
}
Question
Labot2001
I'm having an error in the line of code below:
Where double mean and int median are defined previously in the program without any troubles.
I'm getting weird results when running my program in the compiler. In the examples (ie, NOT CODE :) ) below of my results, variable(number) will mean that I used said variable that had a value of said number.
Any idea what might be causing this? Any help would be greatly appreciated! :D
Full code in case you want more:
(*Note: is there a way to hide this long snippet? Perhaps a "spoiler" button?)
Link to comment
https://www.neowin.net/forum/topic/885350-java-subtraction-error-when-using-double-double-int/Share on other sites
5 answers to this question
Recommended Posts