Actualmente estoy trabajando en una calculadora de GPA para una clase mía. Sigo recibiendo un error que tiene que ver con la división que estoy tratando de hacer en el cálculo del GPA y tengo problemas con la sintaxis de las subcadenas y cómo usarlas correctamente. A continuación se muestra el código que tengo hasta ahora. Si ves algo que pueda arreglar que no sea demasiado complicado, estoy abierto a todas las sugerencias.

import java.util.Scanner;

public class GPA
{
    public static void main(String[] mydata)
    {
        Scanner sc = new Scanner(System.in);        
        String choice = "";
        String cnum;
        String grade;
        double points;
        double gpa = 0;
        int count = 0;
        String credit= "", totalCredit = "";

        while (!choice.equalsIgnoreCase("Q")) 
        {
            cnum = (mydata[0]);
            grade = (mydata[1]);

            if (grade.equalsIgnoreCase("A")) {points = 4.0;} 
            else if (grade.equalsIgnoreCase("B")) {points = 3.0;} 
            else if (grade.equalsIgnoreCase("C")) {points = 2.0;}         
            else if (grade.equalsIgnoreCase("D")) {points = 1.0;}
            else if (grade.equalsIgnoreCase("F")) {points = 0.0;}

            credit = cnum.substring(3,4);

            //System.out.println("credits = " + totalCredit);

            System.out.println("GPA = " points/Double.parseDouble(credit));
            System.out.print("Enter next course number and grade or ‘Q’ to quit: ");
            System.out.println();
            choice = sc.nextLine();
        }
        System.out.println("Bye!");
    }
}
-3
jake blankenship 27 ene. 2016 a las 00:58

3 respuestas

La mejor respuesta

No está mal, pero hay un par de errores sintácticos con su código:

  1. El argumento println debe concatenarse con un +:

    System.out.println("GPA = " + points / Double.parseDouble(credit));
    
  2. La variable local, points, debe inicializarse ya que sus condiciones if-else no son exhaustivas (es decir: grade tiene un rango de tiempo de ejecución de A, B, C, D o F pero { {X3}} técnicamente se puede asignar a lo que sea que esté en mydata[1]). Agregue una condición else o asigne un valor inicial a points:

    double points = 0.0;
    
0
David Yee 26 ene. 2016 a las 22:07

Creo que quieres estar concatenando aquí.

System.out.println("GPA = " + (points/Double.parseDouble(credit)));

En lugar de

System.out.println("GPA = " (points/Double.parseDouble(credit)));

Y si tu quieres

int theGpa = points/Double.parseDouble(credit));
System.out.println("GPA: " + theGpa);
0
intboolstring 26 ene. 2016 a las 22:02

Asegúrese de incluir + para combinar las cadenas :)

System.out.println("GPA = " + (points/Double.parseDouble(credit)));
0
DamienBAus 26 ene. 2016 a las 22:02