黑马程序员技术交流社区

标题: 数组 [打印本页]

作者: 一步步    时间: 2013-11-15 15:27
标题: 数组
package test;
import java.io.*;
import java.util.*;
public class a {
        public static void main(String[] args)throws IOException {
               
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                String s=br.readLine();
                char[]a=new char[5];
                a=s.toCharArray();
        int i;
                for( i=0;i<a.length-1;i++)
                {
                        for(int j=i+1;j<a.length;j++)
                        {
                                if(a[i]>a[j])
                                {
                                char temp=a[i];
                                a[i]=a[j];
                                a[j]=temp;
                                }
                        }
               
                }
                System.out.println("最大值为"+a[i]);
                System.out.println("最小值为"+a[0]);
                }
                  
                  
        }

这段代码我限定了数组长度为5 但我输入了超过5的数据后还照常运行啊?这是怎么回事?


作者: FFF    时间: 2013-11-15 17:40
  1.         public static void main(String[] args)throws IOException {
  2.         
  3.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  4.         String s=br.readLine();
  5.         char[]a=new char[0];
  6.         a=s.toCharArray();//问题应该在这里。把Chat a 指向了String
  7. 从而改变了他的数组长度与String一样。与你输入的数据一样。你初始声明了多长都没有了意义
  8.         int i;
  9.         for( i=0;i<a.length-1;i++)
  10.         {
  11.                 for(int j=i+1;j<a.length;j++)
  12.                 {
  13.                         if(a[i]>a[j])
  14.                         {
  15.                         char temp=a[i];
  16.                         System.out.println(a.length);//我加了这个东西,输出数组长度。发现数组变长了
  17.                         a[i]=a[j];
  18.                         a[j]=temp;
  19.                         }
  20.                 }
  21.       
  22.         }
  23.         System.out.println("最大值为"+a[i]);
  24.         System.out.println("最小值为"+a[0]);
  25.         }
复制代码
我把初始数组长度定为0;然后发现数组随你输入的数据变长而变长、
问题在这句语句中:a=s.toCharArray();//a指向了String从而改变了Char数组的长度。
作者: FFF    时间: 2013-11-15 17:40
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
作者: ╰ゝ冷筱柔    时间: 2013-11-15 18:44
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
这句是啥意思 没看懂
作者: 一步步    时间: 2013-11-15 18:49
FFF 发表于 2013-11-15 17:40
我把初始数组长度定为0;然后发现数组随你输入的数据变长而变长、
问题在这句语句中:a=s.toCharArray();//a ...

那怎样限定它长度为5
作者: FFF    时间: 2013-11-15 19:01
一步步 发表于 2013-11-15 18:49
那怎样限定它长度为5

你可以在a=s.toCharArray();前,先判断s.length()是否<=5;小于或者等于五则执行下面。否则跳出一个提示说不能大于5位数!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2