Если один действительно хотел они могли бы сделать там собственную версию scanf()
так:
import java.util.ArrayList;
import java.util.Scanner;
public class Testies {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
ArrayList<String> strings = new ArrayList<String>();
// get input
System.out.println("Give me input:");
scanf(strings, nums);
System.out.println("Ints gathered:");
// print numbers scanned in
for(Integer num : nums){
System.out.print(num + " ");
}
System.out.println("\nStrings gathered:");
// print strings scanned in
for(String str : strings){
System.out.print(str + " ");
}
System.out.println("\nData:");
for(int i=0; i<strings.size(); i++){
System.out.println(nums.get(i) + " " + strings.get(i));
}
}
// get line from system
public static void scanf(ArrayList<String> strings, ArrayList<Integer> nums){
Scanner getLine = new Scanner(System.in);
Scanner input = new Scanner(getLine.nextLine());
while(input.hasNext()){
// get integers
if(input.hasNextInt()){
nums.add(input.nextInt());
}
// get strings
else if(input.hasNext()){
strings.add(input.next());
}
}
}
// pass it a string for input
public static void scanf(String in, ArrayList<String> strings, ArrayList<Integer> nums){
Scanner input = (new Scanner(in));
while(input.hasNext()){
// get integers
if(input.hasNextInt()){
nums.add(input.nextInt());
}
// get strings
else if(input.hasNext()){
strings.add(input.next());
}
}
}
}
Очевидно мои методы проверку только для струнных и Целых, если вы хотите, чтобы различные типы данных обрабатывались, добавляли соответствующие арраисты и проверяли их. Кроме того, hasNext()
должен, вероятно, находиться в нижней части последовательности if-else if
, так как hasNext()
вернет true для всех данных в строке.
Выход:
Give me input: apples 8 9 pears oranges 5 Ints gathered: 8 9 5 Strings gathered: apples pears oranges Data: 8 apples 9 pears 5 oranges
Вероятно, не лучший пример; но, дело в том, что Scanner
реализует класс Iterator
.Упрощение итерации через вход сканеров с использованием методов hasNext<datatypehere>()
; и затем сохранить вход.
JUSE позади вас [ссылка] http://stackoverflow.com/questions/2506077/how-to-read-integer-value-from-the- standard-input-in-java – beyrem
Почему Downvotes ...? Я думаю, что он всего лишь новичок в джаве. Что мы можем ожидать от новичка, он просто хочет найти какую-то связь между C и Java. –
Java имеет 'String.format (format, args)' (что это довольно похоже на printf). Понятно, что кто-то хочет знать, есть ли эквивалент 'scanf'. Я не знаю, почему этот вопрос был проголосован. – 4gus71n