создание новой строки для строки

#java #function #newline

#java #функция #новая строка

Вопрос:

создал программу, которая подсчитывает и выводит пользователей на основе пользовательского ввода. Я хочу, чтобы программа отображала имена одно под другим с разрывом строки, но застряла на том, как это сделать. код приведен ниже:

 package uk.ac.reading.cs2ja16.Glen.Stringtest;
import java.util.Arrays;
import java.util.Scanner;

public class stringnames {

    public static String[] countNames (String names) {

        // Create Scanner object
        @SuppressWarnings("resource")
        Scanner names1 =new Scanner(System.in);

        // Read a string
        String read= names1.nextLine();

        // Split string with space
        String numPeople[]=read.trim().split(" ");

        System.out.println("The Number of names inputted is:  "  numPeople.length);


       return numPeople;
    }   


    public static void main(String[ ] args){

        System.out.println("Enter the amount of names you want(make sure you make space for each name):n");
        String[] namesout = countNames(null);
        System.out.println(Arrays.toString(namesout));
    }   
}
  

Комментарии:

1. вам нужен цикл for: for(String name: namesout) { System.out.println(name) ;}

2. Также обратите внимание, что в countNames(null) null странно

3. Предупреждения не предназначены для подавления, пожалуйста, закройте все открытые вами ресурсы, с java7 и выше это так же просто, как использовать инструкцию try-with-resource .

Ответ №1:

Прежде всего, countNames методу не нужен параметр, поэтому удалите эту String names штуковину в объявлении метода. И удалите слово null в вызове вашего метода.

Теперь вы можете либо использовать цикл for, либо использовать один из методов в новом потоковом API, если вы используете Java 8.

Я покажу вам оба способа.

Для цикла:

 for (String name: namesout) {
    System.out.println(name);
}
  

println метод автоматически добавляет символ новой строки в конец строки, которую вы хотите распечатать.

Stream API:

 Arrays.stream(namesout).forEach(System.out::println);