Metodi in java-grade calculator [duplicato]


Questa domanda ha già una risposta qui:

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;

  }

}

Author: lildizzle63, 2014-09-02

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

 2
Author: MadProgrammer, 2014-09-01 23:40:55

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
}
 0
Author: Shadow, 2014-09-02 00:01:20

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;

  }
}
 0
Author: theashman400, 2014-09-02 01:32:53