2013-08-27 4 views
0

Привет, ребята, просто интересно, можете ли вы мне помочь, не могли бы вы сказать мне, что я делаю неправильно здесь, что я пытаюсь сделать, это добавить 1, если r напечатано и вычесть 1, если L набирается как для нижнего, так и для верхнего. но позиция продолжает возвращать оригинал. пожалуйста помоги!!Нужна помощь в сортировке этой функции движения

int position = 0; 
    System.out.print("move: "); 
    String car = Global.keyboard.nextLine(); 
    if (car == "r/") 
     position = + 1; 
    if (car == "R") 
     position = +1; 
    if (car == "l") 
     position = -1; 
    if (car == "L") 
     position = -1; 
     System.out.print(position); 
+6

Использовать 'String.equals' для сравнения Строки – Reimeus

+1

http://stackoverflow.com/questions/767372/java-string-equals-versus – kiheru

+1

В большинстве ответов упоминается, что' position = +1; 'должно быть' position + = 1; ', но никто не упомянул предпочтительный способ' position ++; '. – Dukeling

ответ

2

использование:

int position = 0; 
System.out.print("move: "); 
String car = Global.keyboard.nextLine(); 
if (car.equals("r")) 
    position += 1; 
if (car.equals("R")) 
    position += 1; 
if (car.equals("l")) 
    position -= 1; 
if (car.equals("L")) 
    position -= 1; 
    System.out.print(position); 
+0

'автомобиль' выглядит как' String', а не 'char'. Как указано в вопросе: 'String car = Global.keyboard.nextLine();' –

+0

Пожалуйста, посмотрите отредактированный ответ – codeMan

+0

Неправильно, он хочет создать общее количество (как указано в вопросе), но вы назначаете значения +/- 1 в зависимости от определенных условий. –

0

Если вы хотите 1 вкладыш, используйте:

position += car.equalsIgnoreCase("r") ? 1 : car.equalsIgnoreCase("l") ? -1 : 0; 
0

использовать один из этих стилей:

position += 1 
position -= 1 

или

position = position + 1 
position = position - 1 

добавить или вычесть 1 из значения. В настоящее время вы просто присвоив ему значение +/- 1.

+0

, в то время как в этом случае лучше использовать '+ = 1' и' - = 1' (потому что тогда смена количества проще), вы действительно должны хотя бы упомянуть, что они могли бы использовать '++' и '- чтобы выполнить это. – AJMansfield

0

Заменить каждый автомобиль == "нечто" с car.equals ("что-то")

Как это:

String car = Global.keyboard.nextLine(); 
if (car.equals("r")) 
    position = + 1; 
if (car.equals("R")) 
    position = +1; 
if (car.equals("l")) 
    position = -1; 
if (car.equals("L")) 
    position = -1; 
    System.out.print(position); 
+0

Я думаю, что вы опечатались на '' r/"'. – AJMansfield

0

Вместо использования нескольких if с (что должно быть if - else заявления, так что вы не cheack каждый из них в каждом конкретном случае) и String с, помните, что вы можете switchchar:

int position = 0; 
//int dx = 1; For this case, the explanation is in a comment below. 
System.out.print("move: "); 
char car = Global.keyboard.nextChar(); 
switch(car) { 
    case 'r': 
    case 'R': 
     position += 1; //Or position++ if you prefer, but I'd use this approach 
         //just in case you want to do position += 5 in the future 
         //or better yet, position += dx, being dx an int that 
         //defines the range of a single movement. 
     break; 
    case 'l': 
    case 'L': 
     position -= 1; //Same as with right, but position -= dx; 
     break; 
    default: 
     System.out.println("Please, use r - R for (R)ight or l - L for (L)eft"); 
     break; 
} 
System.out.print(position); 

Также обратите внимание, что я изменил ваше положение. Чтобы задать свой текущий вопрос, == не должен использоваться для сравнения Strings поскольку он сравнивает ссылки. Вместо этого используйте equals.

Смежные вопросы