2015-02-11 222 views
0

我想从用户那里获取信息,例如Smith, John 12345的姓氏和ID号,并继续循环直到用户输入“exit”。每当我输入两个输入时,第一个输入被擦除,第二个被存储。也许我应该使用不同的方法,然后我有什么...Java如何存储多个字符串变量

InputStreamReader reader = new InputStreamReader(System.in); 
BufferedReader input = new BufferedReader(reader); 

String inputValues; 
String person; 
String lastname = ""; 
String firstname = ""; 
String id = ""; 

while(true){ 

    inputValues = input.readLine(); 
    person = inputValues.split("\\s+"); 

    if(inputValues.equals("exit"){ 
     break; 
    } 

    else { 
     lastname = person[0]; 
     firstname = person[1]; 
     id = person[2]; 
    } 
} 

我知道我的计划是错误的,但是这是我迄今。我不知道如何存储多个人,最终在此结束时打印出他们的姓名和身份证。

+4

这不会编译。您需要将'person'更改为字符串数组,以符合除了kon提到的'split()'返回类型 – Kon 2015-02-11 23:56:44

+0

之外清楚为什么,但我很想知道如何打印数据? – 2015-02-11 23:58:49

+0

@kon我知道这并不完全正确,但我试图获得存储第一个输入'Smith,John 12345'的概念,并且还能够存储另一个输入,例如“Rogers,Bob 54321”,然后打印出两个他们的名字和ID。 – 2015-02-12 00:07:50

回答

0

我希望我明白你的问题是正确的:你的问题是你覆盖你的旧条目?为了防止你必须使用某种数组或列表。

import java.util.*; 
import java.lang.*; 
import java.io.*; 

class Ideone 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     InputStreamReader reader = new InputStreamReader(System.in); 
     BufferedReader input = new BufferedReader(reader); 

     String inputValues; 
     String[] person; 
     List<String> lastname = new ArrayList<String>(); 
     List<String> firstname = new ArrayList<String>(); 
     List<String> id = new ArrayList<String>(); 

     while(true){ 
      inputValues = input.readLine(); 
      person = inputValues.split("\\s+"); 
      if(inputValues.equals("exit")){ 
       break; 
      }else{ 
       lastname.add(person[0]); 
       firstname.add(person[1]); 
       id.add(person[2]); 
      } 
     } 

     for(int i=0; i<lastname.size(); i++) 
      System.out.println(firstname.get(i) +" "+ lastname.get(i) +" ("+ id.get(i) +")"); 
    } 
} 

在这里看到:https://ideone.com/l1TnF8

+0

名字,姓氏和ID的单独列表?那么,我们希望没有人会操纵一个单子。 – Tom 2015-02-12 00:33:04

+0

当然,在真实的应用程序中,你应该包装它们 - 但看起来问题是基本的理解,所以我想尽可能简化解决方案。 – Verim 2015-02-12 00:40:31

+0

感谢@Verim这是我试图学习的东西。感谢帮助。 – 2015-02-12 06:56:45

0

正如KON注意到你需要的人一个字符串数组,所发生的事情是,每次输入一个新值的新的只替换,因为旧的人只是一个占用一个内存空间的字符串。

相关问题