A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一步步 中级黑马   /  2013-11-15 15:27  /  1094 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的数据后还照常运行啊?这是怎么回事?

5 个回复

倒序浏览
FFF 金牌黑马 2013-11-15 17:40:08
沙发
  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数组的长度。
回复 使用道具 举报 1 0
FFF 金牌黑马 2013-11-15 17:40:23
藤椅
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
回复 使用道具 举报
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
这句是啥意思 没看懂
回复 使用道具 举报
FFF 发表于 2013-11-15 17:40
我把初始数组长度定为0;然后发现数组随你输入的数据变长而变长、
问题在这句语句中:a=s.toCharArray();//a ...

那怎样限定它长度为5
回复 使用道具 举报
FFF 金牌黑马 2013-11-15 19:01:48
地板
一步步 发表于 2013-11-15 18:49
那怎样限定它长度为5

你可以在a=s.toCharArray();前,先判断s.length()是否<=5;小于或者等于五则执行下面。否则跳出一个提示说不能大于5位数!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马