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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 东大小宇哥 中级黑马   /  2015-5-18 20:56  /  627 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

假定屏幕的像素宽度为 screenWidth,写一个函数计算一个字符串需要分成几行显示。
要求:
1)、每行应尽可能多地显示字符,但不能有字符部分或完全显示在屏幕外。超过部分的字符换下一行
显示。
2)、每个字符的像素宽度不一样,每个字符的像素宽度不一样。用 int GetCharWidth(char c)获得每
个字符的像素宽度。

4 个回复

正序浏览
66666666666啊
回复 使用道具 举报
6666666666666666666666666666
回复 使用道具 举报
  1. int Fun(String s,final int screenWidth)
  2. {
  3.         int lineCount = 0;//记录行数
  4.         int pixelCount = 0;//记录字符的像素宽度和
  5.         for(int i=0;i<s.length();i++)
  6.         {        //计算字符的像素宽度和
  7.                 pixelCount = pixelCount + GetCharWidth(s.charAt(i));
  8.                 if(pixelCount > screenWidth)//像素和大于屏幕宽度,则换行
  9.                 {
  10.                         pixelCount = 0;//像素和清0
  11.                         lineCount++;//行数加1
  12.                         i--;//超出屏幕宽度,该字符换到下一行
  13.                 }
  14.         }
  15.         return lineCount;
  16. }
复制代码
回复 使用道具 举报
不知道GetCharWidth的用法,或者是这个方法要自己定义吧,反正我觉得我的思路就是下面的了。
我把我的GetCharWidth换成其他返回类型是int的方法,是可以得出结果的。

  1. class CharWidth2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int num = count("ljakgljalkjtklasngmcn.mglkajkljaklsjkjtsaogojsadlkjglkasjfklasjdlkfjal;dksjflkajglkajdklgajdlkgjlka;jglk;adjgklajdklgjklasdjglkajdlgkjalkgjal;kgjkaljglkajgklajklgjaklgjaljglkajgklajgla");
  6.                 System.out.println(num);
  7.         }
  8.         public static int count(String s)
  9.         {
  10.                 char[] arr = s.toCharArray();
  11.                 int count = 0;
  12.                 int sum = 0;
  13.                 final int screenWidth = 1366;
  14.                 for(int x = 0;x<arr.length;x++)
  15.                 {
  16.                         sum = sum + GetCharWidth(arr[x]);
  17.                         if(sum >= screenWidth)
  18.                         {
  19.                                 sum = 0;
  20.                                 count++;
  21.                                 x--;
  22.                         }
  23.                 }
  24.                 return count;
  25.         }
  26.        
  27. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马