Извлечь каждый отдельный номер из строки - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть это в качестве ввода "1 2 3 4 5", и я хочу, чтобы это было так

int[] numbers = new int[5];
number[0] = 1;
number[1] = 2;
number[2] = 3;
number[3] = 4;
number[4] = 5;

Так, как я могу извлечь каждое число из строки и поместить его вмассив int?

    ConsoleIO io = new ConsoleIO();
    int[] numbers = new int[5];

    io.writeOutput("Type in 5 numbers");

    String input = io.readInput();

    // If input is longer than 1 character for example, "1 2 3 4 5"
    if(input.length() > 1) {
        System.out.println(input.length());
        for(int y = 0; y < io.readInput().length(); y++) {
            numbers[y] = Integer.parseInt(io.readInput().substring(y, io.readInput().indexOf(" "))); 
        }
        return;
    }
    // If input is one number for example, "1"
    else {
        for(int i = 0; i < numbers.length; i++) {
            numbers[i] = Integer.parseInt(io.readInput());
        }
    }

Остальное работает, поэтому, если я введу один номер и нажму клавишу ввода, а затем следующий, все будет хорошо.Но если у меня есть последовательность чисел с пробелом между ними ("1 2 3 4 5"), программа просто ломается.

Ответы [ 4 ]

0 голосов
/ 26 сентября 2018
import java.util.*;
public class Solution {
    public static void main(String []args) {
        Scanner in = new Scanner(System.in);
        String[] nums = in.nextLine().split(" ");
        int[] numbers = new int[5];
        for(int i = 0; i <5; i++) {
            numbers[i] = Integer.parseInt(nums[i]);
            System.out.println(numbers[i]);
        }
    }
}
0 голосов
/ 26 сентября 2018
String input = io.readInput();
int[] arr = new int[5];

if(input.length() >= 5){
    String[] c = input.split(" ");
    for(int i = 0; i < c.length(); i++){
        arr[i] = Integer.parseInt(c[i]);
    }
}
0 голосов
/ 26 сентября 2018

Предположим, что ваш ввод всегда числа с пробелом между собой (или только одно число), в Java 8 вы можете работать следующим образом:

String[] splits = input.split(" ");
int[] result =  Arrays.stream(splits).mapToInt(Integer::parseInt).toArray();
0 голосов
/ 26 сентября 2018

Почему бы не использовать Scanner, а затем split и parse?

Scanner in = new Scanner(System.in);
String[] nums = in.nextLine().split(" ");
for(int i = 0; i <=5; i++) {
   numbers[i] = Integer.parseInt(nums[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...