如何从用户获取输入字符串行并将其分配给类变量? 这是我的班级:
public class MyClass {
String name;
int age;
int ph_no;
}
假设用户输入类似 Adrian 23 98765432 的内容,我的程序应该将Adrian分配给名称,依此类推。有没有办法做到这一点? 请注意,用户还可以提供以下内容: 23 Adrianne 98765432 ,我必须确保提供的字符串映射到相应的变量。
答案 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位数。