2013-12-14 6 views
1

Я пытаюсь разделить массив строк (вход, полученный из консоли) в настоящее время хранящийся в String [] аргКак разбить массив строк на основе динамических записей значений?

host 9 7 1 router 5 8 11 lan 1 5 2 9

Теперь арг принимает значения и сохраняет их в качестве

args[0] = "host", args[1] = "9", args[2] = "7" так далее и так далее.

Значения, которые приходят после строки «хозяина», «маршрутизатор» и «LAN» не генерируются динамически, т.е. нет значений может изменить

например, другой экземпляр может быть

host 0 4 3 9 router 4 9 2 lan 1 3 4 7

для приведенного выше примера я хочу создать

String[] hosts, который будет хранить 0,4,3,9
String[] routers, который будет хранить 4,9,2
String[] lans, который будет хранить 1,3,4,7

Как я могу это сделать?

+1

С петлей. Или, если вы хотите его обработать, регулярные выражения. –

ответ

1
public static void main(String[] args) { 

    String in = "host 0 4 3 9 router 4 9 2 lan 1 3 4 7"; 

    List<String> storage = Arrays.asList(in.split(" ")); 

    boolean isHost = false; 
    boolean isRouter = false; 
    boolean isLan = false; 

    List<String> hostList = new ArrayList<String>(); 
    List<String> routerList = new ArrayList<String>(); 
    List<String> lanList = new ArrayList<String>(); 

    for(String val : storage){ 
     if("host".equals(val)){ 
      isHost = true; 
      continue; 
     } 
     else if("router".equals(val)){ 
      isRouter = true; 
      isHost = false; 
      continue; 
     } 
     else if("lan".equals(val)){ 
      isHost = false; 
      isRouter = false; 
      isLan = true; 
      continue; 
      } 

     if(isHost){    
      hostList.add(val); 
     } 
     else if(isRouter){    
      routerList.add(val); 
     } 
     else if(isLan){    
      lanList.add(val); 
     } 
    } 

    System.out.print("Host: "); System.out.println(hostList); 
    System.out.print("Router: "); System.out.println(routerList); 
    System.out.print("Lan: "); System.out.println(lanList); 

} 

Выход:

Host: [9, 7, 1] 
Router: [5, 8, 11] 
Lan: [1, 5, 2, 9] 
+0

спасибо, что я искал! – pk10

Смежные вопросы