Я продолжаю получать недопустимые коды ошибок начала выражения и ';' ожидаемые коды ошибок, и я не могу понять, почему - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь решить проблему MixedFractions на Kattis. Я знаю структуру basi c, в которой должен находиться код, но я не могу заставить его работать так, как мне нужно. Я хочу, чтобы в то время как L oop читается в двух целых числах, и, хотя они не равны нулю, выполним то, что я поставил ниже. Однако, когда я его компилирую, я продолжаю получать одни и те же ошибки.

import java.util.Scanner;
class MixedFractions2{
        public static void main(String args[]){
                Scanner scan = new Scanner(System.in);
                while (int num = scan.nextInt() != 0 && int den = scan.nextInt() != 0){
                        int give = (num % den);
                        if (num % den == 0){
                                System.out.println(num/den + " " + 0 + " " + "/" + " " + den);
                        } else {
                                System.out.println(num/den + " " + give + " " + "/" + " " + den);
                        }
                }
        }
}

Ошибки, которые я продолжаю получать, выглядят так:

MixedFractions2.java:5: error: '.class' expected
                while (int num = scan.nextInt() != 0 && int den = scan.nextInt() != 0){
                           ^
MixedFractions2.java:5: error: illegal start of expression
                while (int num = scan.nextInt() != 0 && int den = scan.nextInt() != 0){
                               ^
MixedFractions2.java:5: error: ';' expected
                while (int num = scan.nextInt() != 0 && int den = scan.nextInt() != 0){
                                ^
MixedFractions2.java:5: error: illegal start of expression
                while (int num = scan.nextInt() != 0 && int den = scan.nextInt() != 0){
                                     ^
MixedFractions2.java:5: error: ';' expected
                while (int num = scan.nextInt() != 0 && int den = scan.nextInt() != 0){
                                             ^
MixedFractions2.java:5: error: ';' expected
                while (int num = scan.nextInt() != 0 && int den = scan.nextInt() != 0){
                                                                                     ^

Я пытался поместить скобки в поле While l oop, чтобы отделить два сканера, но это не Кажется, проблема, насколько я могу судить. Я не уверен, что еще я мог делать неправильно.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Вы должны сделать это следующим образом:

import java.util.Scanner;

public class MixedFractions2 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num, den, give;
        do {
            num = scan.nextInt();
            den = scan.nextInt();
            if (den != 0) {
                give = num % den;
                if (num % den == 0) {
                    System.out.println(num / den + " " + 0 + " " + "/" + " " + den);
                } else {
                    System.out.println(num / den + " " + give + " " + "/" + " " + den);
                }
            } else {
                System.out.println("Divisor can not be 0");
            }
        } while (true);
    }
}

Пробный прогон:

22 10
2 2 / 10
45 20
2 5 / 20
12 0
Divisor can not be 0
0 12
0 0 / 12

Важные примечания:

  1. Нельзя объявить переменную с помощью while объявление
  2. do...while позволяет выполнить что-то, а затем проверить, позволяет ли условие снова l oop.
  3. while (true) - это бесконечное число l oop, поскольку условие всегда оценивается как true
  4. . Деление выполняется только тогда, когда делитель не равен 0; в противном случае он выдаст java.lang.ArithmeticException

Не стесняйтесь комментировать в случае каких-либо сомнений.

0 голосов
/ 05 февраля 2020

Следующий код выдает нет ошибок компилятора.

import java.util.Scanner;

public class MixedFractions2 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num;
        int den;
        while ((num = scan.nextInt()) != 0 && (den = scan.nextInt()) != 0) {
            int give = (num % den);
            if (num % den == 0) {
                System.out.println(num / den + " " + 0 + " " + "/" + " " + den);
            }
            else {
                System.out.println(num / den + " " + give + " " + "/" + " " + den);
            }
        }
    }
}
...