Java不兼容类型:inputstream无法转换为扫描仪
当我尝试使用此代码执行程序时,我得到了不兼容的类型inputstream无法转换为scanner error。问题出在哪里Java不兼容类型:inputstream无法转换为扫描仪,java,arrays,arraylist,java.util.scanner,inputstream,Java,Arrays,Arraylist,Java.util.scanner,Inputstream,当我尝试使用此代码执行程序时,我得到了不兼容的类型inputstream无法转换为scanner error。问题出在哪里 private ArrayList<Student> readFile() throws FileNotFoundException { readOnCampusStudent (in) ArrayList<Student> studentList = new ArrayList<Student>();
private ArrayList<Student> readFile() throws FileNotFoundException {
readOnCampusStudent (in) ArrayList<Student> studentList = new ArrayList<Student>();
//info.add(type, id, lname, fname, resstat, prfee, credits);
String fName = "p02-students.txt";
Scanner in = new Scanner(new File(fName));
String studentType;
while (in.hasNext()) {
// studentList.add(type, id, lname, fname, resstat, prfee, credits);
if ("C".equals(in.next())) {
studentList.add(readOnCampusStudent(in));
}
studentList.add(readOnlineStudent(in));
in.nextLine();
}
in.close();
return studentList;
}
p02-students.txt
这些代码行都在主类中:
导入静态java.lang.System.in代码>
Scanner in=new Scanner(新文件(fName))代码>
你有两件事叫做“入”。这可能会导致问题中的错误-它会混淆是导入的“in”(是一个InputStream)还是变量“in”(是一个扫描仪)。我建议您不要导入java.lang.System.in,而是在需要使用该变量时键入System.in。这样它就不会与变量冲突
private ArrayList<Student> readFile() throws FileNotFoundException {
String fName = "p02-students.txt";
Scanner scan = new Scanner(new File(fName));
ArrayList<Student> studentList = new ArrayList<Student>();
while (scan.hasNext()) {
String studentType = scan.next();
if (studentType.equals("C")) {
studentList.add(readOnCampusStudent(scan));
} else {
studentList.add(readOnlineStudent(scan));
}
scan.nextLine();
}
scan.close();
return studentList;
}
我打印出了价值观,对每个学生都很有效。不要忘记在学生课堂上更改mid变量的数据类型 问题不清楚,请添加更多详细信息。您的代码中存在的问题不仅仅是不兼容的类型…ReadOnCampussStudent(in)ArrayList studentList=new ArrayList()代码>-这行到底是什么?@CRazyProgrammer程序有四个类,但这就是我得到错误的地方。如果你愿意,我可以设置四门课的代码。程序应该读取p02-students.txt的内容,并计算每个学生的学费。然后程序应该将学费结果写入名为p02-students.txt的输出文件中。@D M这就是产生错误的原因。伙计。我应该如何设置?或者,您可以重命名该变量,使其不被称为“in”。感谢您的帮助。如果您仍然面临此问题,请告诉我。非常感谢。这就解决了错误。我还得到了输入不匹配错误,我按照你的建议做了。现在我准备好了。
public abstract class Student implements Comparable<Student> {
private int mCredits;
private String mFname;
private String mLname;
private int mId;
private double mTuition;
public Student(int pId, String pFname, String pLname) {
mId=pId;
mFname = pFname;
mLname = pLname;
}
//Implement this method in the subclass
//of student class
public abstract void calcTuition();
//Set credits of student
public void setCredits(int pCredits) {
mCredits = pCredits;
}
//Returns the credits of student
public int getCredits() {
return mCredits;
}
//Set first name
public void setFname(String pFname) {
mFname = pFname;
}
//Returns first name
public String getFirstName() {
return mFname;
}
//Set id
public void setid(int pId) {
mId = pId;
}
//Retunrns id
public int getid() {
return mId;
}
//Set last name
public void setLname(String pLname) {
mLname = pLname;
}
//Returns last name
public String getLastName() {
return mLname;
}
//Returns the tuition fee
public void setTuition(double pTuition) {
mTuition = pTuition;
}
//Returns the tuition fee
public double getTuition() {
return mTuition;
}
@Override
public int compareTo(Student pStudnet) {
if (getid() < pStudnet.getid()) {
return -1;
} else if (getid() > pStudnet.getid()) {
return 1;
} else {
return 0;
}
}
int getId() {
return mId;
}
String getLName() {
return mLname;
}
String getFName() {
return mFname;
}
void setResidency(boolean b) {
}
void setProgramFee(double fee) {
}
}
abstract class onCampusStudent extends Student
{
boolean mResident;
double mProgramFee;
onCampusStudent(int pId, String pFname, String pLname)
{
super(pId,pFname,pLname);
}
}
abstract class onlineStudent extends Student
{
boolean mResident;
double mProgramFee;
onlineStudent(int pId, String pFname, String pLname)
{
super(pId,pFname,pLname);
}
}
public class Sorter {
public static final int SORT_ASCENDING = 0;
public static final int SORT_DESCENDING = 1;
/**
* Sorts pList into ascending (pOrder = SORT_ASCENDING) or descending
* (pOrder = SORT_DESCENDING) order using the insertion sort algorithm.
*/
public static void insertionSort(ArrayList<Student> pList, int pOrder) {
for (int i = 1; i < pList.size(); ++i) {
for (int j = i; keepMoving(pList, j, pOrder); --j) {
swap(pList, j, j - 1);
}
}
}
/**
* Returns true if we need to continue moving the element at pIndex until it
* reaches its proper location.
*/
private static boolean keepMoving(ArrayList<Student> pList, int pIndex, int pOrder) {
if (pIndex < 1) {
return false;
}
Student after = pList.get(pIndex);
Student before = pList.get(pIndex - 1);
return (pOrder == SORT_ASCENDING) ? after.compareTo(before) < 0 : after.compareTo(before) > 0;
}
/**
* Swaps the elements in pList at pIndex1 and pIndex2.
*/
private static void swap(ArrayList<Student> pList, int pIndex1, int pIndex2) {
Student temp = pList.get(pIndex1);
pList.set(pIndex1, pList.get(pIndex2));
pList.set(pIndex2, temp);
}
}
public class TuitionConstants {
public static final int ONCAMP_ADD_CREDITS = 350;
public static final int MAX_CREDITS = 18;
public static final int ONCAMP_NONRES_BASE = 12200;
public static final int ONCAMP_RES_BASE = 5500;
public static final int ONLINE_CREDIT_RATE = 875;
public static final int ONLINE_TECH_FEE = 125;
}
C 8230123345450 Flintstone Fred R 0 12
C 3873472785863 Simpson Lisa N 750 18
C 4834324308675 Jetson George R 0 20
O 1384349045225 Szyslak Moe - 6
O 5627238253456 Flanders Ned T 3
private ArrayList<Student> readFile() throws FileNotFoundException {
String fName = "p02-students.txt";
Scanner scan = new Scanner(new File(fName));
ArrayList<Student> studentList = new ArrayList<Student>();
while (scan.hasNext()) {
String studentType = scan.next();
if (studentType.equals("C")) {
studentList.add(readOnCampusStudent(scan));
} else {
studentList.add(readOnlineStudent(scan));
}
scan.nextLine();
}
scan.close();
return studentList;
}
private onCampusStudent readOnCampusStudent(Scanner pIn) {
String id = pIn.next();
String lname = pIn.next();
String fname = pIn.next();
System.out.println(id + " " + lname + " " + fname);
}