为变量赋值



你好,在我的项目,几乎完成了一切,但遇到了一个sm,所以任何帮助将不胜感激。在它类和我的类中,由于某些原因,我不能访问变量,它们不打印sabcdahwidawidaowidawiodhwaidadihqwdoihqwdoihodihwdiohqwdoihqwdioqwddddddddddddddddddddddddddddd我的项目遇到了麻烦。我怎样才能解决这个问题??有人能帮忙????吗

import java.util.
public abs
public String fi
pub
public 
Per
}
public voo() {  
System.out.printlmber);
}   
}


public vo
}


import java.util.Scanner;
public cl
public double gpa;
StuScanner(System.in);
System.out
programNam
System.out.printer: ");
st
System.out.print("Enter first name: ");
firstName = sc.next();
System.out.print("Enter last name: ");
las
System.out.print("Enter: ");
ema
System.out.print("Enter phone number: ");
phoneN
{
Scanner sc =m.in);
Sys("Enrses: ");
doubl
for(i
System.out.print(""":");
ma
}
ca  
}
@Override
public void calculateGPA(double
for(int i=0; i < m

publiInfo() {
System.out.printf("%25d  
,programName ;
}
}


import jr;
publ
doub
System.out.
}
public void printInfo() {   
super.pr
System.out.printf("%25d |n"    
}
}


import java.util.Scanner;
public class Par    
d
ParttimeStud
@Override
public void rea
Scanner sc = new 
System.out.println("Ent cous:");
courseFeesTotal
System.out.prir credit hours:");
cid printInfo() {   
super.printInfo
import java.uti
public class College {
St
S
College
public void pri
System.out.print
fo
);
System.out.printf("%n%15s  | %15s  | %15s  | %15s  | %15s  | %15s  | %15s  | %15s  |n"
"Programr
}
public void ReadStudls() {
Scanner sc =ystem.in)
System.out.printlnStud");
System.out.print");
int type = sc);
if (type == 1) {    
FulltimeStudent ftewdent();
fts.readInfo();
}
else
ParttimeSs = new nt(
}
else if (type 2) { 
nter ***");
}
while (type <1 || type >2){
System.out.prinime S
System.out.print("En
}
else}
else if (type <1 || type >2) { 
public void printStude{
if (
System");
}
else {
printTitle();
for (intnts {
if (stud 
si]();
}

}
}


import java.util.Scanner;
public class ColltemTest {
public static voing[] args) {   
Scanner sc = new Sc
System.out.prine
String name = s
System.out.prin
int ;   
College c = newudents);     

do {
System.out.printent n2 os 

option = 
c.ReadStudentDeta
else if 
}while(optihilewning 
until option 3 is cho
}

让我们从printStudentDetails()

开始。你说什么都没有输出(大概是…(标题除外)。

for (int i = 0; i < numStudents; i++) {
if (students[i] != null) 
students[i].printInfo();
}

问:为什么不打印?

A:两个可能的原因:

  1. 因为numStudents为零。
  2. 因为students[i]null…所有i.

让我们看看上面的代码:

Student [] students;
int numStudents;
College(){}
College(String name, int num) {
this.name = name;
students = new Student[num];
}

在英语中,当创建College时,student被初始化为一个长度为numStudent对象数组。该数组的元素都是null。值numStudents将为0。

那么让我们看看ReadStudentDetails代码,其中读取学生信息。

int type = sc.nextInt();
if (type == 1) {    
FulltimeStudent fts = new FulltimeStudent();
fts.readInfo();
}
...

问:FulltimeStudent对象发生了什么?

A:你把信息读进去,然后....什么都没有。fts变量超出了作用域,没有任何东西能够看到/使用您刚刚创建的对象。

Q:它是如何进入student数组的?

A:没有!

问:为什么numStudents仍然0<一口>1> 因为你的代码没有改变它们中的任何一个…当它创建Student对象时!!或者其他任何地方。 Q:那么应该做什么呢?它是做什么的?A:应该是这样的。
  1. 检查numStudents小于students.length
  2. fts中的引用赋值给students[numStudents]
  3. numStudents增加1。

通读方法的其余部分,还有其他3个地方你在做同样的事情…或多或少。在每种情况下都需要类似的更正。

1 -事实上,我注意到就在ReadStudentDetails方法的末尾,您正在增加numStudents…一次。所以变量是1而不是0。但是你没有把任何学生放进students,所以那里没有任何东西可以打印。


学习的经验教训

这里的主要教训是,应用程序执行您(程序员)(在代码中)告诉它要做的事情。仅此而已。没有什么更少。如果你不让它赋值…它不会。

所以,如果你想弄清楚为什么你的应用程序不工作,你需要仔细阅读你在代码中告诉它做什么。。然后比较你所看到的(例如输出,异常…或者没有输出)。并对这个问题进行一些推理。

我看到了行为x,什么情况会导致这种行为?关于这个节目的状态,我能推断出什么?我可以用其他方式确认吗?(通过添加trace print语句来打印变量。通过使用IDE的调试器。通过观察其他证据)

然后倒推…要弄清楚你可以观察或假设的情况或状态如何/为什么会发生……直到您发现了代码中的缺陷(bug)。

我建议你花点时间读读这些:

  • 如何调试小程序
  • 橡皮鸭调试

我还会注意到你的代码中还有其他错误…但我不打算指出来。此外,在您编写的代码中存在许多样式错误。我不知道你的作业是否会被标记为编码风格,但如果是的话,你应该(IMO)失去大部分的风格标记。在你提交作业之前一定要把它们修改好。(我不打算指出来。检查你的课堂笔记,等等)

相关内容

  • 没有找到相关文章

最新更新