2015-03-31 2 views
2

У меня есть несколько методов, которые я буду использовать в этой программе. Я просто хочу немного помочь с одной стороны. Я должен сделать программу, которая побуждает пользователя вводить количество элементов, подлежащих сортировке. Как только это число будет введено, оно снова предложит пользователю ввести сами элементы. Они должны быть струнами. Я написал несколько быстрых кодов, чтобы увидеть, как это будет работать, но я использовал ints вместо строк. Я не могу понять, как заставить программу взять строку, а не int. Это будет выглядеть, как это на консоли: Введите число элементов: 4Получение пользовательского ввода для строкового массива в Java

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 

ответ

0

Вместо input.nextInt() вы можете просто положить input.next() и получите введен следующий непосредственное значение строки. Вы также можете сделать input.nextLine(), если я правильно помню, и это даст вам целую строку в виде строкового значения, которое может быть полезно при чтении в большом текстовом файле, так как вы сможете справиться с этим по очереди при чтении он в

EDIT:.

Это немного сложнее, без использования массива. Вы можете поместить их в большое строковое значение. Добавление объекта String Builder было бы лучше, поскольку оно изменено, но это, вероятно, не в вашей текущей области.

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

Да, но мне нужно создать цикл, чтобы запросить вводимые элементы (Элемент 1, Элемент 2 и т. Д.). Вот откуда берется исходный массив int. Это число элементов строки, которые пользователь будет вводить. Кроме того, я использовал вход.nextInt() просто посмотреть, как будет работать программа, введя числа вместо строк. – IRGeekSauce

+0

Итак, ваш пользователь вводит количество циклов вправо? Поэтому просто создайте цикл for, чтобы повторять количество раз, когда они вводятся. –

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 из документации

EDIT: Может быть что-то, как это будет делать.

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

Я могу создать массив, я просто не могу использовать класс Arrays или класс коллекций, если это имеет смысл. – IRGeekSauce

+0

В принципе, мне нужно, чтобы начальный массив int зацикливал количество раз, которое пользователь выбирает. Тогда мне нужно иметь строки как пользовательский ввод вместе с этим циклом. По первому приглашению они будут вводить слово, другое слово и другое, пока оно не достигнет конца своего первого номера. Каждый элемент будет строкой, и я должен идти по этому пути. – IRGeekSauce

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 
+0

Эти последние два комментария действительно имеют смысл. Я думал о добавлении/назначении, а также о разборе. Я собираюсь написать код царапины, попробовать несколько вещей и посмотреть, что я придумал. Спасибо, ребята, за советы. – IRGeekSauce

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); 
    } 
} 
Смежные вопросы