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