JAVA数组打印输出问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA数组打印输出问题。相关的知识,希望对你有一定的参考价值。

public class Test
public static void main(String [] args)
Date[] days = new Date[10];

for(int i=0; i<10; i++)
days[i] = new Date(2004,4,6+i);


display(days);



static void display(Date days[])
for(int i = 0; i < days.length; i++)
System.out.println(days[i] + " ");
System.out.println("");



class Date
int year, month, day;
Date( int y, int m, int d)
year = y ; month = m; day = d;


public int compare(Date date)
return year>date.year ? 1
: year<date.year ? -1
: month>date.month ? 1
: month<date.month ? -1
: day > date.day ? 1
: day < date.day ? -1 : 0;



为什么运行打印出来不是显示各元素的值?

数组里保存的是
class Date
int year, month, day;
Date( int y, int m, int d)
year = y ; month = m; day = d;

这个类对象。
System.out.println(days[i].getClass())可以看出 数组里保存的是
test.Date 这个对象。
要输出个各个元素值 必须是 days[i].year,days[i].month,days[i].day .
这个是很基础的东西。

thinking in java 这本书好好看看。java的入门书。
参考技术A public class Test
public static void main(String[] args)
Date[] days = new Date[10];

for (int i = 0; i < 10; i++)
days[i] = new Date(2004, 4, 6 + i);


display(days);



static void display(Date days[])
for (int i = 0; i < days.length; i++)
System.out.println(days[i] + " ");
System.out.println("");



class Date
int year, month, day;

Date(int y, int m, int d)
year = y;
month = m;
day = d;


public int compare(Date date)
return year > date.year ? 1 : year < date.year ? -1 : month > date.month ? 1 : month < date.month ? -1 : day > date.day ? 1
: day < date.day ? -1 : 0;


public String toString()
return year + "-" + month + "-" + day;


你的display(days);中days是个对象,出来的当然不是你想要的东西了,重写toString()方法,可以的,结果是:
2004-4-6
2004-4-7
2004-4-8
2004-4-9
2004-4-10
2004-4-11
2004-4-12
2004-4-13
2004-4-14
2004-4-15

bauble1213的也对
参考技术B 输出的时候应该输出date.year或date。month或date。day,你直接输出date【i】输出的是date对象,不是里面的内容,该输出语句就行了
System.out.println(days[i].year + days[i].month+days[i].day);
参考技术C public class Test

public static void main(String [] args)

Date[] days = new Date[10];

for(int i=0; i<10; i++)

days[i] = new Date(2004,4,6+i);


display(days);



static void display(Date days[])

for(int i = 0; i < days.length; i++)
System.out.println(days[i] + " ");
System.out.println("");



class Date

int year, month, day;
Date( int y, int m, int d)

year = y ; month = m; day = d;


public int compare(Date date)

return year>date.year ? 1
: year<date.year ? -1
: month>date.month ? 1
: month<date.month ? -1
: day > date.day ? 1
: day < date.day ? -1 : 0;


public String toString()

return "Date.year:"+year+" "+"month:"+month+" "+"day:"+day;



记住一句话,最好每个类给他重写toString()方法!
我上面修改了,只增加了一个toString()方法就可以了。。。打印OK!
Date.year:2004 month:4 day:6
Date.year:2004 month:4 day:7
Date.year:2004 month:4 day:8
Date.year:2004 month:4 day:9
Date.year:2004 month:4 day:10
Date.year:2004 month:4 day:11
Date.year:2004 month:4 day:12
Date.year:2004 month:4 day:13
Date.year:2004 month:4 day:14
Date.year:2004 month:4 day:15
参考技术D 重写Date类的toString()方法

你如何返回一个数组并在java中打印出来? [关闭]

【中文标题】你如何返回一个数组并在java中打印出来? [关闭]【英文标题】:How do you return an array and print it out in java? [closed] 【发布时间】:2018-06-23 17:52:07 【问题描述】:

我被这个问题困住了。更具体地说,它是具有 countFeatures 的类。我将遍历数组并打印出每个变量。虽然我在发布问题时是编程新手,但我已经解决了这个问题并留给其他人查看。预期输出是

package main;

public class Main 

    static int count = 0;
    static int countA[];

    public static void main(String args[])
        System.out.println(countDoors("---+---+-++-"));
        System.out.println(countFeatures("---+---|| ###+-++-"));
    

    public static int countDoors(String s)
        for(int i = 0; i<s.length();i++)
        if(s.charAt(i)=='+')
            count++;
            
        

        return count;
    

    public static int[] countFeatures(String s)
        for(int i=0; i<s.length();i++)
            if(s.charAt(i) == '|')
                countA[0]++;
            
            else if(s.charAt(i)=='-')
                countA[1]++;
            
            else if(s.charAt(i)=='.')
                countA[2]++;
            
            else if(s.charAt(i) =='#')
                countA[3]++;
            
            else
                return null;
            
        
        return countA;
    

【问题讨论】:

关于“如何返回数组”,您必须先创建数组对象:int[] countA = new int[4]; 而你在countFeatures() 中实现return null; 的方式可能不是你想要的。 您可以使用 Arrays.toString(array) 来打印数组。因此您可以调用 System.out.println(Arrays.toString(countFeatures("---+---|| ###+-++-"))); 顺便说一句,当我想了解更多有关 Java 语言功能的信息时,我通常会尝试使用 Google 搜索,例如“java tutorial”。第一个链接:docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html 【参考方案1】:

如果您要询问如何打印数组的元素,只需使用循环即可。

假设我们有int[] numbers = new int[] 1, 3, 5, 9, 23,您可以简单地使用循环遍历数组并单独打印每个元素。

for (int i : numbers) 
    System.out.println(i);

【讨论】:

Arrays.toString() 通常是首选,但这是初学者开始的好方法。 @markspace 输出会略有不同。 Arrays.toString() 将输出类似 [1, 2, 3, 4] 的内容,而遍历数组并打印每个元素只会打印元素。 输出肯定是不同的,但是学习如何迭代数组对于初学者来说是很好的做法。输出可以很容易地修复(这也是一个好习惯)。【参考方案2】:

Array 是 java 中的非原始数据类型,因此首先您必须使用 new 运算符对其进行初始化。像这样的

 public static int[] countFeatures(String s)
        countA = new int[s.length()]; // like this. you can also initialize
                                      // it using  operator
        for(int i=0; i<s.length();i++)
            if(s.charAt(i) == '|')
                countA[0]++;
            
            else if(s.charAt(i)=='-')
                countA[1]++;
            
            else if(s.charAt(i)=='.')
                countA[2]++;
            
            else if(s.charAt(i) =='#')
                countA[3]++;
            
            else
                return null;
            
        
        return countA;
    

现在,如果您尝试打印一个数组对象,它将打印一个字母数字值,该值是该对象的外行语言地址。 所以要打印数组的值,你必须像这样打印它:

for(int i=0: i < countA.length : i++)
System.out.println(countA[i]);
 

【讨论】:

以上是关于JAVA数组打印输出问题。的主要内容,如果未能解决你的问题,请参考以下文章

java中打印输出数组

java打印数组

如何打印Java数组?

教妹学Java:数组打印最优雅的方式deepToString

怎样用java打印杨辉三角,自己输入行

java中打印数组的方法