Méthodes dans java - grade calculator [dupliquer]


Cette question a déjà une réponse ici:

J'ai posté une question hier soir sur la fabrication d'une calculatrice de fin d'études en utilisant des méthodes en java (netbeans), je me bats toujours vraiment et je me demande si quelqu'un peut m'aider avec mon code ci-dessous? Nous devons faire un calculateur de note et prendre les entrées de l'utilisateur pour leur marque de test, la marque maximale possible pour ce test et la pondération. Par exemple. 30/50 * 50% = marque pondérée globale. Je dois utiliser des méthodes mais je suis toujours aussi confus quant aux paramètres et à l'endroit où placer la partie d'entrée utilisateur. Toute aide serait grandement appréciée!

     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

Vous devez décomposer votre code en points logiques, par exemple...

  • Demander l'entrée à l'utilisateur...
  • Prenez cette entrée et passez-la à votre méthode "calculer"
  • Permet à la méthode calculate de valider l'entrée...
  • Si valide, calculez le score final, sinon, renvoyez un code d'erreur
  • Répétez au besoin...

Donc, la première chose que vous devez faire est d'obtenir l'entrée de l'utilisateur. Ensuite vous devez fournir une sorte de validation à cela valeur. Ensuite, vous devez (si valide), calculer le score et le renvoyer à l'appelant.

Commencez par essayer de faire fonctionner chaque étape avant d'écrire la suivante. Soyez prêt à réorganiser le code au fur et à mesure que vous le souhaitez...rien n'est gravé dans la pierre.

Vous voudrez peut-être jeter un oeil à le tutoriel de démarrage et le tutoriel d'apprentissage du langage Java, en particulier, la section sur Classes et objets et Définition Méthodes

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

Tout d'abord, votre signature de méthode principale est fausse, devrait être:

public static void main (String[] args) {
    //Code here
}

Dans Netbeans, il vous suffit de taper psvm et d'appuyer sur tab, il remplira ce qui précède pour vous.

Deuxièmement, je n'obtiendrais pas votre entrée de l'utilisateur dans votre méthode de calcul, je créerais 3 variables dans main, et les y obtiendrais, effectuant une validation après avoir obtenu chaque variable, puis transmettrais vos 3 variables à la méthode de calcul, ce qui ressemblerait à quelque chose comme:

public static double CalculateMark(int mark, int maxMark, double weight) {
    //Code here
}
 0
Author: Shadow, 2014-09-02 00:01:20

Je n'ai peut-être pas compris le point de votre programme, mais j'espère que cela aide:

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