在 Java 中获取字符串数组的用户输入

Getting user input for string array in Java

我将在这个程序中使用几种方法。我只是想在一个部分上得到一点帮助。我必须制作一个程序,提示用户输入要排序的元素数。输入该数字后,它将再次提示用户自己输入元素。它们必须是字符串。我写了一些快速代码来查看它是如何工作的,但我使用的是整数而不是字符串。我不知道如何让程序接受字符串而不是 int。 它在控制台上看起来像这样: 输入元素个数:4

Element 1: Apple
Element 2: Banana
Element 3: Orange
Element 4: Kiwi

然后它将按升序对它们进行排序。我还没有到达排序部分,所以现在不相关。我只是想知道究竟如何使用字符串作为输入来循环我的元素 1:、元素 2: 等。

Note: I cannot use the Arrays class, which makes this more difficult for me.

这是我使用整数的结果:

import java.util.*;

public class Sort_as_Inserted {

    public static void main(String[] args) {

       Scanner input = new Scanner(System.in);
       System.out.println("Enter number of elements to be sorted: ");

       int num_of_elements = input.nextInt();

       int[] num = new int[num_of_elements];

       for (int i = 0; i < num_of_elements; i++)
       {
           System.out.print("Element" + (i + 1) + ": ");

           num[i] = input.nextInt();
        }
        System.out.println();
    }//end Main
}//end Class

而不是 input.nextInt() 你可以只输入 input.next() 并且这将得到输入的下一个立即字符串值。如果我没记错的话,你也可以做 input.nextLine() ,这会给你一整行作为字符串值,这在阅读大文本文件时很有用,因为你可以逐行处理它读入时行。

编辑:

如果不使用数组,这有点棘手。您可以将它们放入一个大的字符串值中。附加一个 String Builder 对象会更好,因为它是可变的,但它可能不在您当前的范围内。

String elements ="";
for(int i = 0; i <= num_of_elements; i++){
    System.out.println("Please enter an element");
    elements += input.next() + " ";
}

您可以试试这个例子看看结果。将下面的代码放在一个循环中可以解决问题。在您的循环中,您可以将每个输入添加到一个集合中。 (你不需要在循环中有 Scanner in = new Scanner(System.in)

Scanner in = new Scanner(System.in);
System.out.println("Enter element: ");
el = in.nextLine(); // reads string

要排序,您可以查看文档中的 HashSet 和 TreeSet

编辑: 也许这样的事情会做。

TreeSet<String> ts = new TreeSet<String>();
Scanner in = new Scanner(System.in);
String element = “”;
for(int i = 0; i < 4; i++){
    element =in.nextLine();
    ts.add(element);
}

要将输入作为 String 您需要使用:

String num_of_elements = input.nextLine();

获得后,您可以使用以下方法将其转换为 int

Integer.parseInt(num_of_elements);

您的代码可能如下所示:

public static void main(String[] args) {

       Scanner input = new Scanner(System.in);
       System.out.println("Enter number of elements to be sorted: ");

       String num_of_elements = input.nextLine();

       String[] num = new String[Integer.parseInt(num_of_elements)];

       for (int i = 0; i < Integer.parseInt(num_of_elements); i++)
       {
           System.out.print("Input Element" + (i + 1) + ": ");
           num[i] = input.nextLine();
        }

       int index = 0;
        for(String element : num){
            System.out.println("Element at index " + index + " = " + element);
       }

        input.close(); 
    }//end Main
As per my understanding, you are trying to read a number of string input values, but do not want to use an Array.

please find the below program, where I am using a list interface and any of its implementation classes (could be arraylist, linkedlist etc.)

this program will store the input values and then collections class will sort it for you. One more important thing, you should always close the scanner.

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter number of elements to be sorted: ");

        int num_of_elements = input.nextInt();
        List elementList = new LinkedList();
        for (int i = 0; i < num_of_elements; i++) {
            System.out.print("Element" + (i + 1) + ": ");
            elementList.add(input.next());
        }
        input.close();
        System.out.println(elementList);
        Collections.sort(elementList);
        System.out.println(elementList);
    }
}