Нет ошибки на входе, но нет выхода - PullRequest
0 голосов
/ 19 октября 2019
   package gradrequirment;
   import java.util.Scanner;
  public class graduation {
public static void main(String[] args) {

эта программа показывает, можете ли вы закончить среднюю школу или нет.

Scanner gpa = new Scanner(System.in);
Scanner math_credit = new Scanner(System.in);
Scanner english_credit = new Scanner(System.in);
Scanner science_credit = new Scanner(System.in);
Scanner socialstudies_credit = new Scanner(System.in);
Scanner service_hours = new Scanner(System.in);
Scanner physed3 = new Scanner(System.in);
Scanner arts3 = new Scanner(System.in);
boolean physed;
boolean art;
boolean hope1;
boolean art1;

Возможно ли, что ввод символов, которые я пытался сделать, работал?

System.out.println("Enter your GPA, service hours, and credits for each class.");
System.out.println("");
System.out.println("Enter GPA:");
double GPA = gpa.nextDouble();
System.out.println("Enter Service Hours:");
int hours = service_hours.nextInt();
System.out.println("Enter Y/N if you have take HOPE.");
char hope = physed3.next().charAt(0);
System.out.println("Enter in How Many Math Credits You Have:");
int math = math_credit.nextInt();
System.out.println("Enter in English Credits:");
int english = english_credit.nextInt();
System.out.println("Enter in Science Credits:");
int science = science_credit.nextInt();
System.out.println("Enter in Social Studies Credits:");
int studies = socialstudies_credit.nextInt();
System.out.println("Enter Y/N if You Have A Fine Art Credit.");
char arts = arts3.next().charAt(0);

все логические значения и if-elses, кажется, работают правильно.

if (math >= 4)
{
 boolean math1 = true;
}


 else {

  boolean math1 = false;


if (english >= 4)
{
    boolean english1 = true;
}

else {
    boolean english1 = false;


if (science >= 3)
{

boolean science1 = true;
}
else {
    boolean science1 = false;


   if (studies >= 3)
  {
   boolean studies1 = true;
   }
    else {
    boolean studies1 = false;


if (hours >= 100)
{
boolean hours1 = true;
}
else {
    boolean hours1 = false;


    if (GPA >= 2.0)
    {
        boolean gpa1 = true;
    }
    else {
    boolean gpa1 = false;

    if (physed3.next().charAt(0) == (89))
      physed = true;

    else {
    physed = false;

    if (arts3.next().charAt(0) == (89))
        art = true;
    else {
        art = false;


    if (physed == true)
        {
        hope1 = true;
        }
        else {

        hope1 = false;
        }


        if (art == true)
        {
        art1 = true;
        }
        else {

        art1 = false;

нет видимой ошибки с последним оператором if else, но нет вывода.

        if(art1 && hope1 && gpa1 && hours1 && gpa1 && studies1 && science1 && english1 && math1 == true)
        System.out.println("You Have Graduated!");

        else
        System.out.println("You Have Not Graduated. Try Harder!");

    gpa.close();
    math_credit.close();
    science_credit.close();
    socialstudies_credit.close();
    english_credit.close();
    service_hours.close();






        {
        }   
        }

        }
        }
    }
}   
}
}
}
 }  
}
}

Я относительно новичок в Java, поэтому я не знаю, есть ли очевидная ошибка.

Ответы [ 3 ]

2 голосов
/ 19 октября 2019

Основная проблема, с которой вы сталкиваетесь, заключается в конструкции if else. Вы никогда не получите вывод, если значение математики (ваш вход со сканера)>> 4. Поскольку вы печатаете вывод в блоке else. Точно так же, даже если ваша математика <= 4, ваш оператор не будет выполнен, так как вы печатаете вывод внутри блока else <code>if (physed3.next().charAt(0) == (89)). Таким образом, вы никогда не получите вывод, пока не выполните все условия блока if до if (art == true). Так что кажется, что ваша конструкция if else неправильна. Таким образом, приведенный ниже блок вообще не выполняется.

 if(art1 && hope1 && gpa1 && hours1 && gpa1 
        && studies1 && science1 && english1 && math1 == true)
      System.out.println("You Have Graduated!");

 else
      System.out.println("You Have Not Graduated. Try Harder!");
0 голосов
/ 19 октября 2019

Я изменяю вашу программу и упрощаю ее. Теперь он показывает правильный результат.

public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        boolean physed,art,hope1,art1,gpa1,hours1,studies1,science1,english1,math1;

        System.out.println("Enter your GPA, service hours, and credits for each class.");
        System.out.println("");
        System.out.println("Enter GPA:");
        double GPA = input.nextDouble();
        System.out.println("Enter Service Hours:");
        int hours = input.nextInt();
        System.out.println("Enter Y/N if you have take HOPE.");
        char hope = input.next().charAt(0);
        System.out.println("Enter Y/N if You Have A Fine Art Credit.");
        char arts = input.next().charAt(0);
        System.out.println("Enter in How Many Math Credits You Have:");
        int math = input.nextInt();
        System.out.println("Enter in English Credits:");
        int english = input.nextInt();
        System.out.println("Enter in Science Credits:");
        int science = input.nextInt();
        System.out.println("Enter in Social Studies Credits:");
        int studies = input.nextInt();


        if (math >= 4)
            math1 = true;
        else 
            math1 = false;

        if (english >= 4)
            english1 = true;
        else 
            english1 = false;

        if (science >= 3)
            science1 = true;
        else
            science1 = false;

        if (studies >= 3)
            studies1 = true;
        else 
            studies1 = false;

        if (hours >= 100)
            hours1 = true;
        else 
            hours1 = false;

        if (GPA >= 2.0)
            gpa1 = true;
        else 
            gpa1 = false;

        if (hope == 'Y')
              physed = true;
        else 
            physed = false;

        if (arts == 'Y')
            art = true;
        else 
            art = false;

        if (physed == true)
            hope1 = true;
        else 
            hope1 = false;

        if (art == true)
            art1 = true;
        else 
            art1 = false;

        if(art1 && hope1 && gpa1 && hours1 && gpa1 && studies1 && science1 && english1 && math1 == true)
            System.out.println("You Have Graduated!");

        else
            System.out.println("You Have Not Graduated. Try Harder!");
}

Я изменил тип переменных на логические, а затем удалил лишние операторы из вашего проекта.

0 голосов
/ 19 октября 2019

Ваше состояние

if(art1 && hope1 && gpa1 && hours1 && gpa1 && studies1 && science1 && english1 && math1 == true)

всегда false. Вот почему вы не можете получить свой вывод

...