I try to make total scores and weighted scores into return value and the parameters are passed from the scanner console, and the return values are called from the static void method.
import java.util.*;
public class Grades {
public static void main (String[] args) {
intro();
Scanner console = new Scanner(System.in);
int totalScoreMain = totalScore(score, curveNumber);
double weightedScoreMain = weightedScore(weight, score, curveNumber);
double weightedScore2Main = weightedScore2(weight2, sections, sumScore);
for(int i = 1; i <= 2; exam++); {
System.out.println("Exam i");
exam();
}
homework();
}
public static void intro () {
System.out.println("This program reads exam/homework scores");
System.out.println("and reports your overall course grade.");
System.out.println();
}
public static void exam () {
System.out.print("What is its weight (0-100)?");
double weight = console.nextInt();
System.out.print("Score earned?");
int score = console.nextInt();
System.out.print("Was there a curve (1=yes, 2=no)?");
int curve = console.nextInt();
if (curve == 1) {
System.out.print("How much was the curve?");
int curveNumber = console.nextInt();
} else if (curve == 2) {
int curveNumber = 0;
}
totalScore(score, curveNumber);
weightedscore(weight, score, curveNumber);
System.out.println("Total points = " + totalScoreMain + "/" + "100");
System.out.println("Weighted score = " + weightedScoreMain + "/" + weight);
}
public static int totalScore (int score, int curveNumber) {
int totalScore = Math.min(score + curveNumber, 100);
return totalScore;
}
public static double weightedScore (int weight, int score, int curveNumber) {
double weightedScore = (score + curveNumber) * weight/100;
return weightedScore;
}
public static void homework () {
System.out.print("What is its weight (0-100)?");
int weight2 = console.nextInt();
System.out.print("Number of assignments?");
int number = console.nextInt();
int sumScore = 0;
int sumMax = 0;
for(int i = 1; i <= number; i++) {
System.out.println("Assignment " + i + "score and max?");
int aScore = console.nextInt();
int aScoreMax = console.nextInt();
sumScore = sumScore + aScore;
sumMax = sumMax + aScoreMax; }
System.out.print("How many sections attended?");
int section = console.nextInt();
int sections = Math.min(3 * section, 20);
System.out.println("Section points = " + sections);
weightedScore2(weight2, sections, sumScore);
System.out.println("Total points = " + (sections + sumScore) + "/" + sumMax);
System.out.println("Weighted score = " + weightedScore2 + "/" + weight2);
}
public static double weightedScore2(int weight2, int sections, int sumScore) {
int weightedScore2 = weight2/100 * (sections + sumScore);
return weightedScore2;
}
}
Can someone help me to understand what I’m doing incorrectly? I don’t understand why what I’ve pasted is not working.
You seem not to have understood the scope of variables, yet. The way your program is designed, the main method creates a Scanner object called console but has a reference that is only available inside this method. In order to use it in exam(), you would have to pass the reference in some way or make it some kind of member (or wahtever, don’t try to fix things there, there’s much more broken as it is). However, you most probably just want to create the object in exam(), because it is only used in that method.
It’s the same with weight, score, etc. You attempt to use them in the main method, but at that point, they are simply not there!
You should try to start withan almost empty main method, add line by line and always compile and try to run it and see if it works like you want it to. If it doesn’t, ask for help on that particular problem.
In the code you posted, there are so many errors that it is almost impossible to find a good point to start with giving advice on what to do different.