【问题标题】:assigning values to the variables给变量赋值
【发布时间】:2021-12-04 03:34:51
【问题描述】:

您好,在我的项目中,几乎完成了遇到 sm 的所有事情,因此我们将不胜感激。 它类,在我的类中,由于某些原因我无法访问变量并且它们没有打印 sabcdahwidawidaowidawiodhwaidadihqwdoihqwdoihodihwdiohqwdoihqwdioqwdddddddddddddddddddddddddddddddd 我的项目有问题吗? 我该如何解决这个问题? 有人可以帮忙吗????

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
}

【问题讨论】:

  • 你应该正确地格式化你的问题
  • 我的问题是如何打印信息,因为现在我的程序正在为变量分配空值,但是当我调用 print 方法时,我正在向它们输入值,并且在大学课程中它没有输出除了标题之外的任何内容,因此如果您运行该程序,您将理解我的意思希望此解释对您有所帮助
  • 格式化的目的是让其他人更容易阅读你的代码。如果您想要人帮助您,那么这样做符合您自己的利益。
  • 据我所知,您永远不会为 students 数组分配任何内容。
  • @StephenC 我该如何格式化它

标签: java inheritance annotations polymorphism abstract-class


【解决方案1】:

让我们解决这个问题,从printStudentDetails()开始

你说什么都没有输出(大概......除了标题)。

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

问:为什么什么都不打印?

答:两个可能的原因:

  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 对象数组。该数组的元素都是nullnumStudents 的值将为零。

(这是敲响了警钟了吗?)

那么让我们看一下读取学生信息的ReadStudentDetails代码。

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

问:FulltimeStudent 对象会发生什么?

A:你将信息读入其中,然后……什么也没有。 fts 变量超出范围,任何东西都无法看到/使用您刚刚创建的对象。

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

答:没有!!

问:为什么numStudents仍然为零1?为什么students 还是nulls

A:因为你的代码没有改变它们中的任何一个......当它创建Student 对象时!或其他任何地方。

问:那么应该做什么呢?

答:应该:

  1. 检查numStudents 是否小于students.length
  2. fts 中的引用分配给students[numStudents]
  3. numStudents 加一。

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

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


要学习的教训

这里的主要教训是,应用程序会按照您(程序员)告诉它(在代码中)执行的操作。而已。一点也不差。如果你不告诉它分配一些东西......它不会。

因此,如果您想弄清楚您的应用程序为什么不工作,您需要仔细阅读您在代码中告诉它执行的操作。 小心。然后将您看到的内容(例如输出、异常……或无输出)与代码进行比较。并对问题进行一些推理。

我看到了行为 X。什么情况会导致该行为?关于程序的状态,我可以推断出什么?我可以通过其他方式确认吗? (通过添加跟踪打印语句来打印变量。通过使用我的 IDE 的调试器。通过查看其他证据。)

然后向后工作...找出您可以观察或假设可能的情况或状态如何/为什么会发生...直到您发现缺陷的地步(错误)在您的代码中。

我建议您花时间阅读以下内容:


我还会注意到您的代码中还有其他错误......但我不会指出它们。此外,您编写的代码中存在很多样式错误。我不知道你的作业是否会被标记为编码风格,但如果是的话,你应该(IMO)失去大部分风格标记。确保在提交作业之前修复它们。 (而且我不会指出它们。检查你的讲义等。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-31
    • 2014-04-30
    • 1970-01-01
    • 2017-08-04
    • 2020-06-26
    • 2021-12-31
    • 2017-09-13
    • 2023-03-13
    相关资源
    最近更新 更多