我的对象数组只打印最后输入的值 java
My array of objects only printing last entered value java
大家好,我是 Java 编程新手。在这里,我试图用对象数组实现一个代码。问题是每当我尝试打印时。它只打印最后输入的值 10 次。
import java.util.*;
class Tax{
int ssn,income;
void Tax(){}
void Tax(int s,int i){
this.ssn=s;this.income=i;
}
int getssn(){
return ssn;
}
int getincome(){
return income;
}
}
public class Usetaxpayer{
public static void main(String[] args){
Tax[] y=new Tax[10];
int i,inc,s=100;
Scanner in=new Scanner(System.in);Tax x=new Tax();
for(i=0;i<10;i++)
{
inc=in.nextInt();y[i]=x;
x.Tax(s,inc);
s++;
}
for(i=0;i<10;i++)
{
System.out.println("SSN"+y[i].getssn()
+"income"+y[i].getincome()+"\n");
}
}
}
请帮帮我`
问题是您使用一个对象 10 次并一次又一次地替换值。这仅保留最后一个值。试试这个:
class Tax{
int ssn,income;
void Tax(){}
void Tax(int s,int i){
this.ssn=s;this.income=i;
}
int getssn(){
return ssn;
}
int getincome(){
return income;
}
}
public class Main{
public static void main(String[] args){
Tax[] y=new Tax[10];
int i,inc,s=100;
Scanner in=new Scanner(System.in);
for(i=0;i<10;i++)
{
Tax x=new Tax();
inc=in.nextInt();
y[i]=x;
x.Tax(s,inc);
s++;
}
for(i=0;i<10;i++)
{
System.out.println("SSN "+y[i].getssn() +"income "+y[i].getincome()+"\n");
}
}
}
您错误地将 void
作为构造函数。此外,您需要在循环内创建实例。
演示:
import java.util.Scanner;
class Tax {
int ssn, income;
Tax(int s, int i) {
this.ssn = s;
this.income = i;
}
int getssn() {
return ssn;
}
int getincome() {
return income;
}
}
public class Usetaxpayer {
public static void main(String[] args) {
final int SIZE = 2;
Tax[] y = new Tax[SIZE];
int i, inc = 0, s;
Scanner in = new Scanner(System.in);
for (i = 0; i < SIZE; i++) {
System.out.print("Enter SSN: ");
s = in.nextInt();
System.out.print("Enter income: ");
inc = in.nextInt();
y[i] = new Tax(s, inc);
}
for (i = 0; i < SIZE; i++) {
System.out.println("SSN: " + y[i].getssn() + ", income: " + y[i].getincome());
}
}
}
样本运行:
Enter SSN: 123
Enter income: 1000
Enter SSN: 234
Enter income: 2000
SSN: 123, income: 1000
SSN: 234, income: 2000
注意:我使用了一个大小为 2 的数组进行演示。根据您的要求更改 SIZE
的值。
你有两个错误:
- 声明构造函数时出错,这些构造函数是在没有类型的情况下声明的,如下面的代码所示:
public Tax(){}
public Tax(int s, int i){
this.ssn=s;this.income=i;
}
根据您的需要,建造者可以是 public 或私人的。
- 目前通过你的循环并将对象 x 添加到数组中只是添加相同的内存实例,最好的添加方法如下。
Scanner in=new Scanner(System.in);
for(i=0;i<10;i++)
{
inc= in.nextInt();
y[i]= new Tax(s,inc);
s++;
}
这样您就可以始终添加一个新的 Tax 实例。
大家好,我是 Java 编程新手。在这里,我试图用对象数组实现一个代码。问题是每当我尝试打印时。它只打印最后输入的值 10 次。
import java.util.*;
class Tax{
int ssn,income;
void Tax(){}
void Tax(int s,int i){
this.ssn=s;this.income=i;
}
int getssn(){
return ssn;
}
int getincome(){
return income;
}
}
public class Usetaxpayer{
public static void main(String[] args){
Tax[] y=new Tax[10];
int i,inc,s=100;
Scanner in=new Scanner(System.in);Tax x=new Tax();
for(i=0;i<10;i++)
{
inc=in.nextInt();y[i]=x;
x.Tax(s,inc);
s++;
}
for(i=0;i<10;i++)
{
System.out.println("SSN"+y[i].getssn()
+"income"+y[i].getincome()+"\n");
}
}
}
请帮帮我`
问题是您使用一个对象 10 次并一次又一次地替换值。这仅保留最后一个值。试试这个:
class Tax{
int ssn,income;
void Tax(){}
void Tax(int s,int i){
this.ssn=s;this.income=i;
}
int getssn(){
return ssn;
}
int getincome(){
return income;
}
}
public class Main{
public static void main(String[] args){
Tax[] y=new Tax[10];
int i,inc,s=100;
Scanner in=new Scanner(System.in);
for(i=0;i<10;i++)
{
Tax x=new Tax();
inc=in.nextInt();
y[i]=x;
x.Tax(s,inc);
s++;
}
for(i=0;i<10;i++)
{
System.out.println("SSN "+y[i].getssn() +"income "+y[i].getincome()+"\n");
}
}
}
您错误地将 void
作为构造函数。此外,您需要在循环内创建实例。
演示:
import java.util.Scanner;
class Tax {
int ssn, income;
Tax(int s, int i) {
this.ssn = s;
this.income = i;
}
int getssn() {
return ssn;
}
int getincome() {
return income;
}
}
public class Usetaxpayer {
public static void main(String[] args) {
final int SIZE = 2;
Tax[] y = new Tax[SIZE];
int i, inc = 0, s;
Scanner in = new Scanner(System.in);
for (i = 0; i < SIZE; i++) {
System.out.print("Enter SSN: ");
s = in.nextInt();
System.out.print("Enter income: ");
inc = in.nextInt();
y[i] = new Tax(s, inc);
}
for (i = 0; i < SIZE; i++) {
System.out.println("SSN: " + y[i].getssn() + ", income: " + y[i].getincome());
}
}
}
样本运行:
Enter SSN: 123
Enter income: 1000
Enter SSN: 234
Enter income: 2000
SSN: 123, income: 1000
SSN: 234, income: 2000
注意:我使用了一个大小为 2 的数组进行演示。根据您的要求更改 SIZE
的值。
你有两个错误:
- 声明构造函数时出错,这些构造函数是在没有类型的情况下声明的,如下面的代码所示:
public Tax(){}
public Tax(int s, int i){ this.ssn=s;this.income=i; }
根据您的需要,建造者可以是 public 或私人的。
- 目前通过你的循环并将对象 x 添加到数组中只是添加相同的内存实例,最好的添加方法如下。
Scanner in=new Scanner(System.in); for(i=0;i<10;i++) { inc= in.nextInt(); y[i]= new Tax(s,inc); s++; }
这样您就可以始终添加一个新的 Tax 实例。