Переход на строки в Java

0

Я только что начал изучать Java и одно из различий, которые я заметил из C++, и VB заключается в том, что Java не имеет операторов goto, которые я часто использую при программировании.

Есть ли способ перепрыгнуть между строками, используя другое выражение? Я пытался использовать break и продолжать, но безрезультатно (я мог бы что-то делать не так).

Вот код с операторами goto и как я хочу, чтобы он работал:

public class HelloWorld {

static Scanner sc = new Scanner(System.in);
public static void main(String[] args)
{
    jump1:
    System.out.print("What do you want to calculate? ");
    String method = sc.nextLine();
    if (method.equals("tax")) tax();
    else {
        System.out.print("Please input a valid method. \n\n");
        goto jump1;
    }  
}

Что такое хорошая замена команд goto?

  • 9
    Go To почти для любого случая были обескуражены в течение десятилетий. Вы когда-нибудь слышали о loops ?
  • 2
    Вы должны прочитать « Перейти к заявлению, которое считается вредным , мудрость с 1968 года».
Показать ещё 3 комментария
Теги:
goto

4 ответа

1
Лучший ответ

Вам следует избегать утверждений "goto" на всех языках в соответствии с правилами "структурированного программирования", вместо этого использовать if-then-else или do или while или для циклов для управления потоком программы.

Java ДЕЙСТВИТЕЛЬНО есть своего рода выражение "Гот", который вы можете использовать только немного изменить свой код, но рассмотреть while цикл ниже и break выражение, которое выскакивает из цикла.

  public static void main(String[] args) {
    String method = "";
    while(! method.equals("tax")){
      System.out.print("What do you want to calculate? ");
      method = sc.nextLine();
      if(method.equals("tax"))
        break;
      System.out.print("Please input a valid method. \n\n");
    }
    tax();
  }

Оператор break позволяет отображать ваше выражение "Please... valid". Вы также можете использовать это:

  public static void main(String[] args) {
    String method = "";
    while(! method.equals("tax")){
      System.out.print("What do you want to calculate? ");
      method = sc.nextLine();
    }
    tax();
  }

Я также вроде как:

  public static void main(String[] args) {
    String method = "";
    while(1==1){
      System.out.print("What do you want to calculate? ");
      method = sc.nextLine();
      if(method.equals("tax")
        break;
      System.out.print("Please input a valid method. \n\n");
    }
    tax();
  }

Вы можете перейти к учебникам Java; они хороши.

6

В while цикл в данном случае.

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html

Для этого (очень конкретного) экземпляра вы можете

System.out.print("What do you want to calculate? ");

String method = sc.nextLine();
while (!method.equals("tax"))
{
    System.out.print("Please input a valid method. \n\n");
    method = sc.nextLine();
}
tax();

Очевидно, что это работает только в том случае, если ваш единственный ожидаемый правильный ввод - это "налог", но это структура, на которой можно строить.

  • 0
    Я могу быть предубежден, но этот код ясно показывает, что предназначено, где для кода ОП мои глаза сканируют его как минимум три раза. Но нельзя ли написать цикл do..while while в Java?
  • 0
    @Jongware, вы действительно можете написать циклы do-while в java, и такой цикл, вероятно, будет идеальным для этого
Показать ещё 1 комментарий
2

Вы хотите поместить ваш if-statement в while-loop, используя hasNextLine(), которая будет зацикливаться до тех пор, пока не будет больше строк для повторения:

while(sc.hasNextLine()) {
    // Your code..
}

Для получения дополнительной информации о проверке функции сканер :: hasNextLine.

  • 0
    Пожалуйста, избегайте ссылок "это", где вы можете легко написать (сокращенный) URL.
  • 1
    Укороченные ссылки @Jongware настоятельно не рекомендуются, см. Этот мета-пост, где люди тратят значительное время на удаление этих ссылок. То, что первоначально сделал плакат, намного предпочтительнее, чем загадочный URL.
Показать ещё 4 комментария
1

В этом случае вы можете использовать цикл do-while-loop, который будет выполнять оператор первым и будет повторяться только в том случае, если утверждение истинно:

public class HelloWorld {

static Scanner sc = new Scanner(System.in);
public static void main(String[] args)
{
  boolean right = true;

    do {
      if(right)
        System.out.print("What do you want to calculate? ");
      else
        System.out.print("Please input a valid method. \n\n");

      String method = sc.nextLine();
      boolean right = false;
    } while (!method.equals("tax"));
    tax();

    }  
}
  • 0
    Вам не хватает закрывающей фигурной скобки.
  • 0
    Хорошо, спасибо, я исправил это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню