Java 从用户输入读取泛型类型
我做了一些研究,但什么也没发现,所以我需要帮助从用户输入中读取泛型类型。例如,我想输入一个整数,当我再次运行程序时,我想输入一个字符串。我该如何使用扫描仪或其他输入读取器?这是我的密码Java 从用户输入读取泛型类型,java,arrays,generics,Java,Arrays,Generics,我做了一些研究,但什么也没发现,所以我需要帮助从用户输入中读取泛型类型。例如,我想输入一个整数,当我再次运行程序时,我想输入一个字符串。我该如何使用扫描仪或其他输入读取器?这是我的密码 public class array <T,E> { private T [] a; private int size; private int location; private E add; private E delete; private E find; public array(){ }
public class array <T,E> {
private T [] a;
private int size;
private int location;
private E add;
private E delete;
private E find;
public array(){
}
public array(int size){
this.size = size;
this.location = 0;
this.a = (T[])(new Object[size]);
}
public boolean add(T element){
if(location == size){
return false;
}else{
this.a[location++] = element;
System.out.println("Element added at location " + location);
return true;
}
}
public int find(T element){
for(int i = 0 ; i < location; i ++){
if(a[i] == element){
System.out.println("Element found at location " + i);
return i;
}
}
System.out.println("Couldn't find element");
return -1;
}
public boolean delete(T element){
int loc = find(element);
if(loc == -1){
System.out.println("Couldn't find element");
return false;
}else{
for(int x = loc; x < location - 1; x++){
a[x] = a[x+1];
}
System.out.println("Element deleted");
location -= 1;
return true;
}
}
public void go(){
DataInputStream in = new DataInputStream(System.in);
Scanner scanner = new Scanner(System.in);
array a = null;
int choice = 0;
System.out.println("Chose what you want to do");
System.out.println("1: Add a value");
System.out.println("2: Delete a value");
System.out.println("3: Find a value and return the index");
System.out.println("4: Display all elements in array");
System.out.println("5: Exit");
System.out.println();
try{
choice = scanner.nextInt();
}catch(Exception e){
System.out.println("Incorrect input");
go();
}
switch(choice){
case 1:
System.out.println("Enter the element you want to add");
add = in.read();
a.add(add);
break;
case 2:
System.out.println("Enter the element you want to delete");
delete = in.nextInt();
a.delete(delete);
break;
case 3:
System.out.println("Enter the element you want to find");
find = in.nextInt();
a.find(find);
break;
case 4:
System.out.println(a.toString());
break;
case 5:
System.exit(0);
break;
}
System.out.println("Continue? 1-Yes, 2-No");
int yn = in.nextInt();
if(yn == 1){
go();
}else{
System.exit(0);
}
}
@Override
public String toString(){
String string = "";
for(int i = 0; i < location; i++){
string = string + " " + a[i];
}
return "Numbers " + string;
}
}
公共类数组{
私人T[]a;
私有整数大小;
私密地点;
私人E-add;
私人E删除;
私人E-find;
公共数组(){
}
公共数组(整数大小){
这个。大小=大小;
这个位置=0;
this.a=(T[])(新对象[size]);
}
公共布尔加法(T元素){
如果(位置==大小){
返回false;
}否则{
这个.a[location++]=元素;
System.out.println(“在位置添加的元素”+位置);
返回true;
}
}
公共整数查找(T元素){
对于(int i=0;i
这是我的主要课程(司机)
公共类数组操作器{
私有静态整数大小;
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
数组a=新数组();
System.out.println(“输入数组的大小”);
大小=in.nextInt();
System.out.println(“-------------------------------”;
a=新阵列(大小);
a、 go();
}
}
因此,我的问题是要求用户在go()方法中为数组中的元素输入值。我不知道使用哪个输入读取器来读取泛型类型,或者如果可能的话。谢谢在创建类数组的对象之前,最好先确定输入的类型。也许你们可以从用户那个里得到它。确定类型后,使用例如:
array arr=new array
创建对象。或者,对于泛型类型,请使用对象我可以看到您有新的扫描仪(System.in)
,它指示您引用的是文本用户输入。这里的问题是,您的程序如何知道应该将文本输入转换为哪种类型
没有“读取泛型类型”这样的东西,您必须将输入转换为适当的类型(整数、字符串、自定义类等)
这里的一种方法是向用户询问其他信息,以便区分他/她提供的输入类型。正如一些人所说,您可以使用Object
作为泛型变量类型,特别是在使用泛型方法或不知道用户将使用什么数据类型时,如下面这个简单的方法:
import java.util.Scanner;
public class GenericMethod {
public static void main(String[] args) {
System.out.println("Type something that's yours: ");
Scanner sc = new Scanner(System.in);
Object thing;
thing = sc.next();
isMine(thing);
}
// Generic Method
public static <T> void isMine(T x) {
System.out.println(x + " is mine.");
}
}
import java.util.Scanner;
公共类泛型方法{
公共静态void main(字符串[]args){
System.out.println(“键入属于您的内容:”);
扫描仪sc=新的扫描仪(System.in);
客观事物;
thing=sc.next();
伊斯明(事物);
}
//通用方法
公共静态空隙率(T x){
System.out.println(x+“是我的”);
}
}
import java.util.Scanner;
public class GenericMethod {
public static void main(String[] args) {
System.out.println("Type something that's yours: ");
Scanner sc = new Scanner(System.in);
Object thing;
thing = sc.next();
isMine(thing);
}
// Generic Method
public static <T> void isMine(T x) {
System.out.println(x + " is mine.");
}
}