Metodi in java-grade calculator [duplicato]
Questa domanda ha già una risposta qui:
- Metodi in java (calcolatore di grado) 6 risposte
- Divisione intera: Come si produce un doppio? 10 risposte
Ho postato una domanda ieri sera su come fare una calcolatrice grad mentre usando i metodi in java (netbeans) sto ancora lottando e mi chiedo se qualcuno può aiutarmi con il mio codice qui sotto? Dobbiamo fare un calcolatore di grado e prendere input dall'utente per il loro segno di prova, il segno massimo possibile per quel test e la ponderazione. Ad Es. 30/50 *50% = marchio ponderato complessivo. Devo usare metodi ma sono ancora così confuso sui parametri e su dove inserire la parte di input dell'utente. Qualsiasi aiuto sarebbe molto apprezzato!
import java.util.Scanner;
public class GradeCalculator {
public static void main()
{
System.out.println("Your overall score is: " +CalculateMark(finalMark));
}
public static double CalculateMark (int overallscore)
{
Scanner in = new Scanner(System.in);
int score1 = in.nextInt();
System.out.print("Enter mark: ");
if(score1 >=0 || score1<1000){
} System.out.print("Enter Max mark: ");
int maxMark = in.nextInt();
if (maxMark >=0 || maxMark<1000);{
} System.out.print("Enter weighting as a decimal (eg. 75% = 0.75): ");
double weighting = in.nextDouble();
if (weighting <0 && weighting>=10){
} double finalMark;
finalMark= (score1/maxMark)*weighting;
return finalMark;
}
}
3 answers
È necessario suddividere il codice in punti logici, ad esempio...
- Chiedere all'utente l'input...
- Prendi quell'input e passalo al tuo metodo "calcola"
- Consente al metodo calculate di convalidare l'input...
- Se valido, calcolare il punteggio finale, in caso contrario, restituire un codice di errore
- Ripetere come richiesto...
Quindi, la prima cosa che devi fare è ottenere l'input dall'utente. Successivamente è necessario fornire un qualche tipo di convalida a questo valore. Successivamente è necessario (se valido), calcolare il punteggio e restituirlo al chiamante.
Inizia cercando di far funzionare prima ogni passaggio, prima di scrivere il successivo. Siate pronti a ri-strutturare il codice come si va come richiesto...nulla è scolpito nella pietra.
Potresti dare un'occhiata a il tutorial per iniziare e il tutorial per imparare il linguaggio Java , in particolare, la sezione su Classi e oggetti e Che definiscono Metodi
Prima di tutto, la tua firma del metodo principale è sbagliata, dovrebbe essere:
public static void main (String[] args) {
//Code here
}
In Netbeans, devi solo digitare psvm
e premere tab, compilerà quanto sopra per te.
In secondo luogo, non otterrei il tuo input dall'utente nel tuo metodo di calcolo, creerei 3 variabili in main e le porterei lì, eseguendo la convalida dopo aver ottenuto ogni variabile, quindi passerei le tue 3 variabili al metodo di calcolo, che sarebbe simile a:
public static double CalculateMark(int mark, int maxMark, double weight) {
//Code here
}
Potrei non aver capito il punto del tuo programma, ma spero che questo aiuti:
import java.util.Scanner;
public class GradCalc {
private double finalMark = 0; //I would make this an instance variable
private static double maxMark = 0; //these need to be double if you want decimal answers
private static double score1 = 0;
public static void main(String[] args) // you need the String[] args for main to run
{
System.out.println("Your overall score is: " +String.format("%.2f", CalculateMark()));
//String.format was to make it 2 decimal place lengths
}
public static double CalculateMark ()// remove parameters to alter instance var
{
Scanner in = new Scanner(System.in);
System.out.print("Enter Max mark: "); //call this first
maxMark = in.nextInt();
System.out.print("Enter mark: "); //I switched these next two lines
score1 = in.nextInt();
while(true){ // this makes sure the user won't give a neg answer
// or one that is over the max Mark (you can change this if you want)
if(score1 >=0 && score1<=maxMark){
//nothing was in this if statement
break;
}
System.out.print("Enter mark again. The latter was not applicable: ");
score1 = in.nextInt();
}
System.out.print("Enter weighting as a decimal (eg. 75% = 0.75): ");
double weighting = in.nextDouble();
while (true){
if (weighting > 0 && weighting<=1){ //you probably had the conditional signs mixed up
//nothing was in this if statement either
break;
}
System.out.print("Weighting decimal was not between 0 and 1. Please enter again: ");
weighting = in.nextDouble();
}
double finalMark;
finalMark= (score1/maxMark)*weighting;
return finalMark;
}
}