Как я могу написать следующий код Java лучше? - PullRequest
1 голос
/ 19 декабря 2011

Я пробовал следующий код во многих отношениях, но он просто не работает. У меня две проблемы с этим.

  1. Мне нужно, чтобы не продолжать КОЛИЧЕСТВО, когда я нажимаю X.
  2. Если я хочу продолжить, т. Е. Я не нажимаю X, а ввожу код, который должен нажимать, он правильно принимает первый вход, однако, когда он обходит цикл второго типа, он выводит что-то вроде «CODE». : КОЛИЧЕСТВО: "на той же строке.

Я был бы очень признателен за помощь, потому что я застрял и Google не помог. Я совершенно новичок в программировании, у меня нет опыта работы с языками, поэтому я был бы очень признателен за подробную помощь.

Вот код:

import java.util.Scanner;
class WHY
{
     public static void main(String[] args)
     {
          Scanner in = new Scanner(System.in);
          boolean count = true;

          for (int i = 0; count; i++)
          {
               System.out.print("CODE: (X to terminate)");
               String code = in.nextLine();
               System.out.print("QUANTITY: ");
               int quantity = in.nextInt();

               if (code.equals("X"))
                    count = false;
          }
     }    
}

Ответы [ 6 ]

2 голосов
/ 19 декабря 2011
    Scanner in = new Scanner(System.in);

    while (true) {
        System.out.print("CODE: (X to terminate)");
        String code = in.nextLine();
        if (code.equalsIgnoreCase("x")) {
            break;
        }

        System.out.print("QUANTITY: ");
        int quantity = in.nextInt();
        in.nextLine();
    }
1 голос
/ 19 декабря 2011

Это пример процедурного псевдокода о том, как упростить ваше утверждение (организовать его в соответствии с вашим классом).

private static final String QUIT = "X";
String code = ""

while (!(code = readCode()).equalsIgnoreCase(QUIT)) {
    //Process the code read....
    System.out.println();
    System.out.print("QUANTITY: ");
    int quantity = in.nextInt();
}

public String readCode() {
    Scanner in = new Scanner(System.in);
    System.out.println();
    System.out.print("CODE: (X to terminate)");
    return in.nextLine();
}
0 голосов
/ 19 декабря 2011

Сохраняйте это простым:

Scanner in = new Scanner(System.in);
int total = 0;
while (true) {
    System.out.print("CODE: (X to terminate)");
    String code = in.nextLine();
    if (code.equalsIgnoreCase("x")) {
        break;
    }
    System.out.print("QUANTITY: ");
    int quantity = in.nextInt();
    total += quantity;
}
System.out.print("The total is: " + total);
0 голосов
/ 19 декабря 2011
  • Используйте цикл while для логических условий, особенно если вы нигде не используете index.Использование цикла for для итерации элементов последовательностей.
  • Использование оператора break для выхода из цикла вместо использования логического условия **
  • Использование стиля кодирования Java
  • Использование System.out.printlnвыведите строку текста.

Итак, в основном:

import java.util.Scanner;
class WHY {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while(true) {
           System.out.print("CODE: (X to terminate)");
           String code = in.nextLine();
           System.out.println("QUANTITY: ");
           int quantity = in.nextInt();

           if (code.equals("X"))
                break;
        }
    }    
}

** вопрос вкуса

0 голосов
/ 19 декабря 2011

Поскольку вы хотите разорвать цикл, как только пользователь введет 'X', вы можете использовать ключевое слово break, чтобы остановить цикл. Я также рекомендую заменить петлю for на петлю while(true). Это продолжит цикл навсегда (и именно здесь ключевое слово break используется, чтобы не допустить бесконечного цикла). System.out.print печатает текст в той же строке, используйте System.out.println() для печати текста и переходите к следующей строке. Наконец, вы должны переместить ваш условный оператор сразу после прочтения значения code и заменить count = false на break.

В качестве последнего совета я бы порекомендовал вам использовать фигурные скобки всякий раз, когда у вас есть выражение if else. Это может помочь решить проблему на более позднем этапе разработки, когда вам нужно добавить дополнительное утверждение и забыть о скобках или вы слишком устали, чтобы это замечать;).

0 голосов
/ 19 декабря 2011

Используйте System.out.println().Это создаст новую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...