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

时间:2015-03-31 04:18:53

标签: java arrays java.util.scanner

我将在这个程序中使用几种方法。我只是想要一点帮助。我必须创建一个程序,提示用户输入要排序的元素数。输入该号码后,它将再次提示用户输入元素。它们必须是字符串。我写了一些快速代码,看看它是如何工作的,但我使用了int而不是字符串。我无法弄清楚如何让程序采用字符串而不是int。 它在控制台上看起来像这样: 输入元素数量:4

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

然后它会按升序排序。我还没有到达排序部分,所以它现在无关紧要。我只是想知道在世界上我如何循环我的元素1:,元素2:等以字符串作为输入。

  

注意:我不能使用Arrays类,这对我来说更难。

以下是我使用的内容:

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

4 个答案:

答案 0 :(得分:0)

您可以只输入input.next()而不是input.nextInt(),这将获得输入的下一个直接字符串值。如果我没记错的话你也可以做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() + " ";
}

答案 1 :(得分:0)

您可以尝试此示例来查看结果。在循环中输入以下代码可以解决问题。在循环中,您可以将每个输入添加到集合中。 (您不需要在循环中使用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);
}

答案 2 :(得分:0)

要将输入作为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

答案 3 :(得分:0)

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);
    }
}