Сравнение строк (пользователь вводит столько, сколько хочет), а затем определение того, какая из них первая (в зависимости от того, какая первая буква идет первой) с использованием цикла for - PullRequest
2 голосов
/ 07 мая 2020

Сначала я должен попросить пользователя ввести число. Это число будет определять, сколько предложений он должен напечатать (должно быть> 2), а затем я должен сравнить эти предложения. Я должен сказать, какой из них идет первым (в зависимости от порядка букв алфавита). Это все, что я сделал до сих пор. Я не знаю, как сравнивать строки, так как не знаю, сколько пользователь наберет, и не знаю имён.

import java.util.*;

public class Sentences {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int number = 0;
        while (number < 2) {
            System.out.println("Type a number > 2");
            number = scan.nextInt();
        }

        scan.nextLine();

        String sentence;
        int y = 0;
        for (int i = 0; i < number; i++) {
            System.out.println("Type a sentence");
            sentence = scan.nextLine();
        }
    }
}

1 Ответ

1 голос
/ 07 мая 2020

Вы были близки. Вместо одной переменной (sentence) вам понадобится массив (sentences[]), как показано ниже:

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int number = 0;
        while (number < 2) {
            System.out.print("Type a number > 2: ");
            number = Integer.parseInt(scan.nextLine());
        }

        String[] sentences = new String[number];
        int y = 0;
        for (int i = 0; i < number; i++) {
            System.out.print("Type a sentence: ");
            sentences[i] = scan.nextLine();
        }
        Arrays.sort(sentences);
        for (String sentence : sentences) {
            System.out.println(sentence);
        }
    }
}

Чтобы отсортировать String sentences[], вам нужно использовать Arrays.sort(sentences), как показано выше.

Пробный прогон:

Type a number > 2: 0
Type a number > 2: 3
Type a sentence: Hello world
Type a sentence: You are awesome
Type a sentence: My name is Jane
Hello world
My name is Jane
You are awesome

[Обновление]

Согласно вашему разъяснению, вы хотели напечатать только одно предложение, которое является самым низким в алфавитном порядке. Это похоже на отслеживание минимального числа из списка чисел.

Алгоритм следующий:

  1. Сохраните первый ввод в переменной, скажем, lowestAlphabetical.
  2. В al oop сравните значение lowestAlphabetical со следующим вводом, и если следующий ввод в алфавитном порядке ниже, поместите следующий ввод в lowestAlphabetical.

Демо:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int number = 0;
        while (number < 2) {
            System.out.print("Type a number > 2: ");
            number = Integer.parseInt(scan.nextLine());
        }

        // Scan the first sentence
        System.out.print("Type a sentence: ");
        String sentence = scan.nextLine();

        // Since we have only one sentence till now, it is also the lowest in
        // alphabetical order
        String lowestAlphabetical = sentence;

        // Loop for next inputs
        for (int i = 1; i < number; i++) {
            System.out.print("Type the next sentence: ");
            sentence = scan.nextLine();
            if (sentence.compareTo(lowestAlphabetical) < 0) {
                lowestAlphabetical = sentence;
            }
        }
        System.out.println(lowestAlphabetical);
    }
}

Пробный запуск:

Type a number > 2: 3
Type a sentence: Hello world
Type the next sentence: Good morning
Type the next sentence: My name is Jane
Good morning
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...