import java.util.Scanner;

public class TomAndJerry {
    Scanner sc = new Scanner(System.in);

    public String catAndMouse(int x, int y, int z) {
        String result = null;
        int q = 0;
        System.out.println("enter the number of queries");
        q = sc.nextInt();
        for (int i = 0; i < q; i++) {
            x = sc.nextInt();
            y = sc.nextInt();
            z = sc.nextInt();
        }

        if (Math.abs(x - z) < Math.abs(y - z)) {
            result = "Cat A";
        } else if (Math.abs(x - z) > Math.abs(y - z)) {
            result = "Cat B";
        } else {
            result = "Mouse C";
        }
        return result;
    }

    public static void main(String[] args) {
        int x = 0, y = 0, z = 0;
        String result = null;
        TomAndJerry tj = new TomAndJerry();
        result = tj.catAndMouse(x, y, z);
        System.out.println(result);
    }

}

WYNIK:-

 enter the number of queries
                    2
                  1 2 3
                  1 3 2
                 Mouse C

Uzyskam wyjście tylko dla ostatnich zapytań / wejść za pomocą skanera. Jak uzyskać wyjście dla pozostałych zapytań / wejść. Dzięki za swój czas z wyprzedzeniem! :)

0
Raj 28 luty 2019, 08:06

2 odpowiedzi

Najlepsza odpowiedź

To z powodu tego kawałka kodu -

System.out.println("enter the number of queries");
        q = sc.nextInt();
        for (int i = 0; i < q; i++) {
            x = sc.nextInt();
            y = sc.nextInt();
            z = sc.nextInt();
        }

Pytasz użytkownika o wiele zapytań, a następnie z prośbą o X, Y i Z tyle razy w pętli i nie przetwarzanie wartości wewnątrz pętli.

Wyłączną odpowiedzialność metody catAndMouse powinna być wydawana w wyniku parametrów wejściowych. Zostaw więc wejście biorące do klasy głównej. Możesz uprościć kod taki jak poniżej:

public class TomAndJerry {
    private static Scanner sc = new Scanner(System.in);

    public String catAndMouse(int x, int y, int z) {
        String result;
        if (Math.abs(x - z) < Math.abs(y - z)) {
            result = "Cat A";
        } else if (Math.abs(x - z) > Math.abs(y - z)) {
            result = "Cat B";
        } else {
            result = "Mouse C";
        }
        return result;
    }

    public static void main(String[] args) {

        System.out.println("enter the number of queries");
        int q = sc.nextInt();
        int x , y , z ;
        String result;
        TomAndJerry tj = new TomAndJerry();
        for (int i = 0; i < q; i++) {
            x = sc.nextInt();
            y = sc.nextInt();
            z = sc.nextInt();
            result = tj.catAndMouse(x, y, z);
            System.out.println(result);
        }
    }
}
0
uneq95 28 luty 2019, 05:27

Musisz użyć listy lub łańcucha [] zamiast prostego obiektu ciągów, aby zwrócić wiele strun z funkcji, również jeśli warunek, jeśli musi być częścią pętli do pętli i musisz dodać wynik na liście lub tablicy poniżej jest oczekiwanym wyjściem przy użyciu listy

import java.util.*;

public class Main {
Scanner sc = new Scanner(System.in);

public List<String> catAndMouse(int x, int y, int z) {
    List<String> results = new ArrayList<String>();
    int q = 0;
    System.out.println("enter the number of queries");
    q = sc.nextInt();
    for (int i = 0; i < q; i++) {
        x = sc.nextInt();
        y = sc.nextInt();
        z = sc.nextInt();
        if (Math.abs(x - z) < Math.abs(y - z)) {
             results.add("Cat A");
        } else if (Math.abs(x - z) > Math.abs(y - z)) {
             results.add("Cat B");
        } else {
             results.add("Mouse C");
        }
    }


    return results;
}

public static void main(String[] args) {
    int x = 0, y = 0, z = 0;
    Main tj = new Main();
    List<String> results =  tj.catAndMouse(x, y, z);
    System.out.println(results.toString());
}

}

Wprowadź liczbę zapytań 2 1 2 3 1 3 [CAT B, myszy C]

2
Mustahsan 28 luty 2019, 05:46