二维数组的结果有问题

时间:2018-11-12 18:45:45

标签: java arrays

    char[][] tab = {
            {'S', 'a', 'm', 's', 'u', 'n', 'g'},
            {'N', 'o', 'k', 'i', 'a'},
            {'A', 'p', 'p', 'l', 'e'},
            {'B', 'l', 'a', 'c', 'k', 'B', 'e', 'r', 'r', 'y'},
            {'A', 'l', 'c', 'a', 't', 'e', 'l'},
            {'S', 'o', 'n', 'y'},
            {'J', 'o', 'l', 'l', 'a'},
    };

    int letters = 0;
    int k = 0;
    int licz = 0;

    for (int i = 0; i < tab.length; i++) {

        for (int j = 0; j < tab[i].length; j++) {

            k = j;
            while (k < tab[i].length - 1) {
                if (tab[i][j] == tab[i][k]) letters++;
                k++;
            }

            if (letters == 2) {
                System.out.print("in this word : ");
                for (int l = 0; l < tab[i].length; l++)
                    System.out.print(tab[i][l]);
                System.out.print(" there are at least two identical letters");
                System.out.println();
            }
            letters = 0;
        }
    }

    System.out.println();
    System.out.println();

    for (int i = 0; i < tab.length; i++) {
        for (int j = 0; j < tab[i].length; j++) {
            licz += (int) (tab[i][j]);
        }
        if (licz > 255) {
            System.out.print("in this word : ");
            for (int l = 0; l < tab[i].length; l++)
                System.out.print(tab[i][l]);
            System.out.print(" sum of characters in the word > 255");
            System.out.println();
        }

        licz = 0;

    }

    letters = 0;
    System.out.println();
    System.out.println();

    for (int i = 0; i < tab.length; i++) {
        for (int j = 0; j < tab[i].length; j++) {
            if (tab[i][j] == 'i')
                letters++;
        }
        if (letters > 0) {
            System.out.print("in this word : ");
            for (int l = 0; l < tab[i].length; l++)
                System.out.print(tab[i][l]);
            System.out.print(" there is at least one character 'i'");
            System.out.println();
        }

        letters = 0;

    }
    System.out.println();
    System.out.println();

    for (int i = 0; i < tab.length; i++) {

        for (int j = 0; j < tab[i].length; j++) {

            k = j;
            while (k < tab[i].length - 1) {
                if ((int) (tab[i][j]) == (int) (tab[i][k]) || (int) (tab[i][j]) == (int) (tab[i][k]) - 32) letters++;
                k++;
            }

            if (letters == 2) {
                System.out.print("in this word : ");
                for (int l = 0; l < tab[i].length; l++)
                    System.out.print(tab[i][l]);
                System.out.print(" there are at least two of the same characters");
                System.out.println();
            }
            letters = 0;
        }
    }

为什么我的程序显示的结果与预期的不同?

相同的字符是BlackBerry的字母,为什么?

结果:

这个词:苹果至少有两个相同的字母

这个单词:BlackBerry至少有两个相同的字母

这个单词:BlackBerry至少有两个相同的字母

这个单词:Jolla至少有两个相同的字母

在这个单词中:三星单词中的字符总和> 255

在这个单词中:诺基亚单词中的字符总和> 255

在这个单词中:苹果> 255个单词中的字符总和

在这个单词中:BlackBerry单词中的字符总和> 255

在这个单词中:单词> 255中的阿尔卡特字符总和

此单词中的单词:Sony单词中的字符总和> 255

在这个单词中:单词> 255中的荷拉字符总和

这个词:诺基亚至少有一个字符“ i”

这个词:三星至少有两个相同的字符

这个词:苹果至少有两个相同的字符

这个词:BlackBerry有至少两个相同的字符

这个词:BlackBerry有至少两个相同的字符

在这个词中:阿尔卡特至少有两个相同的字符

这个单词:Jolla至少有两个相同的字符

1 个答案:

答案 0 :(得分:0)

您期望得到这个结果吗?

输出:

这个单词:BlackBerry至少有两个相同的字母

在这个单词中:三星单词中的字符总和> 255

在这个单词中:诺基亚单词中的字符总和> 255

在这个单词中:苹果> 255个单词中的字符总和

在这个单词中:BlackBerry单词中的字符总和> 255

在这个单词中:单词> 255中的阿尔卡特字符总和

此单词中的单词:Sony单词中的字符总和> 255

在这个单词中:单词> 255中的荷拉字符总和

这个词:诺基亚至少有一个字符“ i”

这个词:BlackBerry有至少两个相同的字符

在这个词中:阿尔卡特至少有两个相同的字符

代码:

public static void main(String args[]) {
        char[][] tab = {
            {'S', 'a', 'm', 's', 'u', 'n', 'g'},
            {'N', 'o', 'k', 'i', 'a'},
            {'A', 'p', 'p', 'l', 'e'},
            {'B', 'l', 'a', 'c', 'k', 'B', 'e', 'r', 'r', 'y'},  
            {'A', 'l', 'c', 'a', 't', 'e', 'l'},
            {'S', 'o', 'n', 'y'},
            {'J', 'o', 'l', 'l', 'a'},
        };

    int letters;
    int k = 0;
    int licz = 0;

    for (int i = 0; i < tab.length; i++) {
        letters = 0;
        for (int j = 0; j < tab[i].length-1; j++) {

            k = j+1;

            while (k < tab[i].length) {
                if (tab[i][j] == tab[i][k])
                    letters++;  
                k++;
            }

            if (letters == 2) {
                System.out.print("in this word : ");

                for (int l = 0; l < tab[i].length; l++)
                    System.out.print(tab[i][l]);

                System.out.print(" there are at least two identical letters");
                System.out.println();
                break;
            }
        }

    }

    System.out.println();
    System.out.println();

    for (int i = 0; i < tab.length; i++) {
        for (int j = 0; j < tab[i].length; j++) {
            licz += (int) (tab[i][j]);
        }
        if (licz > 255) {
            System.out.print("in this word : ");
            for (int l = 0; l < tab[i].length; l++)
                System.out.print(tab[i][l]);
            System.out.print(" sum of characters in the word > 255");
            System.out.println();
        }

        licz = 0;

    }

    letters = 0;
    System.out.println();
    System.out.println();

    for (int i = 0; i < tab.length; i++) {
        for (int j = 0; j < tab[i].length; j++) {
            if (tab[i][j] == 'i')
                letters++;
        }
        if (letters > 0) {
            System.out.print("in this word : ");
            for (int l = 0; l < tab[i].length; l++)
                System.out.print(tab[i][l]);
            System.out.print(" there is at least one character 'i'");
            System.out.println();
        }

        letters = 0;

    }
    System.out.println();
    System.out.println();

    for (int i = 0; i < tab.length; i++) {

        for (int j = 0; j < tab[i].length-1; j++) {

            k = j+1;
            while (k < tab[i].length) {
                if ((int) (tab[i][j]) == (int) (tab[i][k]) || (int) (tab[i][j]) == (int) (tab[i][k]) - 32)
                    letters++;
                k++;
            }

            if (letters == 2) {
                System.out.print("in this word : ");
                for (int l = 0; l < tab[i].length; l++)
                    System.out.print(tab[i][l]);
                System.out.print(" there are at least two of the same characters");
                System.out.println();
                break;
            }

        }
        letters = 0;
    }
}