Путаница из-за выполнения + со строками и интсами - PullRequest
0 голосов
/ 08 апреля 2011

Я делаю программу, и я нахожусь в той части, где я хочу попросить пользователя ввести оценку для каждого судьи, которая существует, но когда она начинается и попросить первого судью, правильно сказать «Введите счет длясудья 01 "

, но когда он переходит к следующему, он пропускает 02 и идет прямо к 11, а затем к 21. Что я делаю неправильно?Вот строка кода для этой области

int[] judge = new int[7];


    for(int i = 0; i<judge.length; i++)
    {
    System.out.println("Enter the difficulty score for each judge (0-10)");

        System.out.println("Enter the score for judge" + i+1);
        judge[i]=keyboard.nextInt();
while(score > 0 && score <=10);
    }

}

Ответы [ 5 ]

7 голосов
/ 08 апреля 2011

Оператор + работает слева направо. Слева от оператора у вас есть строка, а справа «я». Таким образом, происходит конкатенация строк. «я» преобразуется в строку. Затем происходит еще один + 1, который снова рассматривается как конкатенация строки.

Чтобы считать это i + 1 дополнением, поместите его в скобки.

System.out.println("Enter the score for judge" + (i+1));
3 голосов
/ 08 апреля 2011

Приоритет оператора - это ключ. (i+1) должно быть в скобках.

Без него все операции + оцениваются слева направо.

В Java строка + что угодно - строка. "foo"+bar это просто сокращение для "foo" + String.valueOf( bar );.

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

0 голосов
/ 08 апреля 2011

Попробуйте этот код:

int[] judge = new int[7];

for(int i = 0; i < judge.length; i++)
{
   System.out.println("Enter the difficulty score for each judge (0-10)");
   System.out.println("Enter the score for judge 0" + (i + 1));

   judge[i] = keyboard.nextInt();
   while (score > 0 && score <= 10);
}
0 голосов
/ 08 апреля 2011

Происходит следующее: в строке

System.out.println("Enter the score for judge" + i+1);

выполняется конкатенация строк в строке и i, затем конкатенация снова с 1.

Чтобы исправить это, поставьте круглые скобки вокругмне +1 нравится так:

System.out.println("Enter the score for judge" + (i+1));
0 голосов
/ 08 апреля 2011

попробуйте это:

System.out.println («Введите счет для судьи» + (i + i));

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

String = "Guru" + 123 + 5;

- это Guru1235

, где

String = "Gurur" + (123 + 5);

т.е. Гуру128

...