Below is my code from Lesson 11, just edit the few lines that need to be edited
ID: 3686931 • Letter: B
Question
Below is my code from Lesson 11, just edit the few lines that need to be edited to get the output that is asked for above in the photo.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.*;
public class CalcWeightedAvg{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
public void calcWeightedAvg(int numbers[],double weight)
{
int sum=0;
double avg=0;
for(int i=0;i<numbers.length;i++)
sum+=numbers[i];
avg=(sum/numbers.length)*weight;
System.out.println("calculated weight is"+avg);
}
public double getWeight()
{
try
{
System.out.println("Enter weight in range of 0 and 1");
double weight=Double.parseDouble(bufferedReader.readLine());
if(weight<0 || weight>1.0)
{
System.err.println("Invalid weight value");
System.exit(0);
}
return weight;
}
catch (IOException e) {
e.printStackTrace();
return 0;
}
}
public void readIntValues()
{
System.out.println("Enter 5-10 values between 0 and 100");
String input=null;
try {
int size=0;
input = bufferedReader.readLine();
String[] StringNumbers=input.split(" ");
int[] numbers=new int[StringNumbers.length];
for(int i=0;i<StringNumbers.length;i++)
{
try
{
if(Integer.parseInt(StringNumbers[i]) >=0 && Integer.parseInt(StringNumbers[i])<=100)
{
numbers[i]=Integer.parseInt(StringNumbers[i]);
size++;
}
}
catch (NumberFormatException ex) {
}
}
System.out.println(size);
if(!(size>=5 && size<=10))
{
System.err.println("Invalid input values.Enter 5-10 values between 50-100");
System.exit(0);
}
calcWeightedAvg(numbers,getWeight());
}
catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String []args){
CalcWeightedAvg test=new CalcWeightedAvg();
test.readIntValues();
}
}
Explanation / Answer
Hi, Below highlighted lines are code changes. Its working fine now. Updated calcWeightedAvg() methd as per your requirement.
CalcWeightedAvg.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.*;
public class CalcWeightedAvg{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
public void calcWeightedAvg(int numbers[],double weight)
{
int sum=0;
double avg=0;
/*Logic for finding minimum Weight from list of Weights*/
int min = numbers[0];
for(int i=0;i<numbers.length;i++){
if(min > numbers[i]){
min = numbers[i];
}
}
/*Boolean variable used for remove first minimum weight while calculating weight average*/
boolean minWeightRemoved = false;
for(int i=0;i<numbers.length;i++){
/*Condition for removing minimum weight*/
if(numbers[i] != min || minWeightRemoved == true){
sum+=numbers[i];
}
else{
minWeightRemoved = true;
}
}
avg=((double)sum/(numbers.length-1))*weight;
System.out.println("calculated weight is "+avg);
}
public double getWeight()
{
try
{
System.out.println("Enter weight in range of 0 and 1");
double weight=Double.parseDouble(bufferedReader.readLine());
if(weight<0 || weight>1.0)
{
System.err.println("Invalid weight value");
System.exit(0);
}
return weight;
}
catch (IOException e) {
e.printStackTrace();
return 0;
}
}
public void readIntValues()
{
System.out.println("Enter 5-10 values between 0 and 100");
String input=null;
try {
int size=0;
input = bufferedReader.readLine();
String[] StringNumbers=input.split(" ");
int[] numbers=new int[StringNumbers.length];
for(int i=0;i<StringNumbers.length;i++)
{
try
{
if(Integer.parseInt(StringNumbers[i]) >=0 && Integer.parseInt(StringNumbers[i])<=100)
{
numbers[i]=Integer.parseInt(StringNumbers[i]);
size++;
}
}
catch (NumberFormatException ex) {
}
}
System.out.println(size);
if(!(size>=5 && size<=10))
{
System.err.println("Invalid input values.Enter 5-10 values between 50-100");
System.exit(0);
}
calcWeightedAvg(numbers,getWeight());
}
catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String []args){
CalcWeightedAvg test=new CalcWeightedAvg();
test.readIntValues();
}
}
Output:
Enter 5-10 values between 0 and 100
5 10 34 2 60
5
Enter weight in range of 0 and 1
0.5
calculated weight is 13.625
Enter 5-10 values between 0 and 100
20 20 40 60 80 100
6
Enter weight in range of 0 and 1
0.5
calculated weight is 30.0
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.