Условие остановиться для цикла - PullRequest
1 голос
/ 10 февраля 2020

Эта маленькая программа не превосходит ожидаемый результат. Посмотрите, можете ли вы помочь, пожалуйста!

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String numInput;

    // Declaring and initializing answer variable to an empty string.
    String answer = "";

    // Declaring and initializing the 2d array "number".
    String number[][] = {
            { "10", "20", "30" },
            { "15", "25", "35" }, };

    System.out.print("\n");

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            System.out.print("\t" + number[i][j] + " ");
        }
        System.out.println("\n");
    }

    boolean found = false;
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            System.out.print("\n\tEnter a Number : ");

            // Expected input 10 or 15
            numInput = input.nextLine();

            // number on first line, first column.
            if (numInput.equals(number[i][0])) {
                found = true;
                System.out.print("\n\tNumber " + numInput + " found");
                System.out.print(" on line " + i + " colum " + j); 
            } 

            if (!found) {
                    System.out.print("\n\tNumber not found");
            }
        }
    }
}

Предполагается взять введенные пользователем данные и сравнить их с данными в массиве (только первый столбец). Но это касается только первого числа в первом столбце

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Я надеюсь, что комментарии в коде прояснят мою точку зрения, что вы выполняете итерацию, хотя Array при проверке индекса столбца stati c, следовательно, работает, хотя jl oop бесполезно, не говоря уже о том, что вы вводите каждый jl * 1005. * ==> вы бы проверили, если (при i = 0) вход [0] [0] вводится 3 раза с 3 различными входами

    boolean found = false;
    //Input needs to be moved here so you don't iterate though it for each column.
    System.out.print("\n\tEnter a Number : ");
    numInput = input.nextLine();
    for (int i = 0; i < 2; i++) {

            //for (int j = 0; j < 3; j++) {    You cant determine if you found it in the column J because your are checking for [i][0] therefore the for loop for J is useless as it would match regardless of what number j is
            // number on first line, first column.
            if (numInput.equals(number[i][0])) {
                found = true;
                System.out.print("\n\tNumber " + numInput + " found");
                System.out.print(" on line " + i + " colum 0");
            }
            if (!found) {

                System.out.print("\n\tNumber not found");

            }
        //}
    }
1 голос
/ 10 февраля 2020

Это потому, что вы делаете input.nextLine для каждого числа в вашем массиве. Вы должны заполнить numInput вне этих двух циклов. Вот так:

Scanner input = new Scanner(System.in);

String numInput;

// Declaring and initializing answer variable to an empty string.

String answer = "";

// Declaring and initializing the 2d array "number".

String number[][] = {

        { "10", "20", "30" },

        { "15", "25", "35" }, };

System.out.print("\n");

for (int i = 0; i < 2; i++) {

    for (int j = 0; j < 3; j++) {

        System.out.print("\t" + number[i][j] + " ");
    }

    System.out.println("\n");
}

boolean found = false;
System.out.print("\n\tEnter a Number : ");
numInput = input.nextLine();

for (int i = 0; i < 2; i++) {

    for (int j = 0; j < 3; j++) {            

        // number on first line, first column.

        if (numInput.equals(number[i][0])) {

            found = true;

            System.out.print("\n\tNumber " + numInput + " found");

            System.out.print(" on line " + i + " colum " + j);


            } 

        if (!found) {

                System.out.print("\n\tNumber not found");

        }
    }
}
}
...