从输入字符串为类变量赋值

时间:2015-02-04 05:22:56

标签: java

如何从用户获取输入字符串行并将其分配给类变量? 这是我的班级:

public class MyClass {
  String name;
  int age;
  int ph_no;
}

假设用户输入类似 Adrian 23 98765432 的内容,我的程序应该将Adrian分配给名称,依此类推。有没有办法做到这一点? 请注意,用户还可以提供以下内容: 23 Adrianne 98765432 ,我必须确保提供的字符串映射到相应的变量。

2 个答案:

答案 0 :(得分:1)

你可以试试这个,但它只是为了样品。可能会有很多调整来打破代码。所以你必须加入一些东西才能让它变得牢不可破。

BufferedReader text = new BufferedReader(new InputStreamReader(
        System.in));
String text2 = text.readLine();
String[] arr = text2.split(" ");
for (String string : arr) {
    try {
        if (string.length() < 3) {
            age = Integer.parseInt(string);
        } else
            ph_no = Integer.parseInt(string); // supposing phno is below integer range
    } catch (Exception e) {
        name = string;
    }
}
System.out.println("NAME ->" + name);
System.out.println("AGE ->" + age);
System.out.println("PHNO ->" + ph_no);

答案 1 :(得分:1)

试试这个......其中split是输入字符串:

public class MyClass 
{

String name;
int age;
int ph_no;

public static void main(String[] args)
{

//Get string input equal to the variable "str"
String[] pieces = str.split("\\s+");
Boolean[] isNumber = new Boolean[pieces.length];

for(int i=0; i<isNumber.length; i++)
{
 boolean[i] = isInteger(pieces[i]);
 }

for(int i=0; i<pieces.length; i++)
{
 if(boolean[i] && pieces[i] > 200)
   ph_no = pieces[i];
 else if(boolean[i] && pieces[i] < 200)
   age = pieces[i];
 else
   name = pieces[i];
}
}

public static boolean isInteger(String s) {
try { 
    Integer.parseInt(s); 
    } catch(NumberFormatException e) { 
    return false; 
 }
 return true;
}

此代码的作用是假设您的年龄小于200且电话号码大于200或更多可能超过3位数。