Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote