Topic: 大小写转换 ASCII码

  Print this page

1.大小写转换 ASCII码 Copy to clipboard
Posted by: flyingqifei
Posted on: 2005-10-26 21:50

请问怎么把char类型的字符转换为大写啊!我用toUpperCase()不行啊!String类型的可以。
ASCII码在JAVA中支持吗?听说只支持Unicode,那怎么互转啊!

2.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: windy
Posted on: 2005-10-27 13:21

那就转换到String类型地呗,不然就用包装类包装成Character类型,包装后就有toUpperCase(char) 方法了。。。

3.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: bwpc
Posted on: 2005-10-27 13:34

可以自己写一个
public char toUpperCase(char c){
    
    if(c<97||c>122)
      return c;
    else
      return (char)(c-32);
    
  }

4.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: flyingqifei
Posted on: 2005-10-27 23:58

谢谢!转成String是不行的。自己写个方法是个好主意。

ASCII码在JAVA中支持吗?听说只支持Unicode,那怎么互转啊!
比如说我想打印A-Z,用个循环,要调用哪个函数啊!我找文档没找到。

5.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: bwpc
Posted on: 2005-10-28 09:30

我没看到需要转换的理由啊, 我上面写的就是java代码啊,是符合你的要求的啊, char的整数值就是其asii码值啊, 我不太清楚你到底需要什么样的功能,呵呵。

6.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: flyingqifei
Posted on: 2005-10-28 17:11

你的代码是把字母换成大写,我想要把整数值转成字母,当然稍加修改也可以的。不知道有没有内置的函数可以调用的。

7.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: bwpc
Posted on: 2005-10-28 17:13

似乎没有 (char)(intvalue)不就行了, 但没涉及到unicode什么啊 :)

8.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: flyingqifei
Posted on: 2005-10-30 22:43

我的目的是计算一个文本文件file.txt里A-Z字母的个数。
file.txt文件里随便输入的字母。
Sp.java文件如下:


import java.io.*;

public class Sp
{
  public static void main(String arg[])
  {
    int count[] = new int[26];
    char ch;
    int sum = 0;
    double per[] = new double[26];
    float bar = 0;

    try
    {
      DataInputStream in = new DataInputStream(new BufferedInputStream(
          new FileInputStream("file.txt")));

      while (in.available() != 0)
      {
        char word = ((char) in.readByte());
        word = Character.toUpperCase(word);

        if (word - 'A' >= 0 && word - 'A' < 26)
        {
          count[word - 'A']++;
        }
      }
    }
    catch (IOException e)
    {
      System.out.println(e.toString());
    }

    for (int i = 0; i < 26; i++)
    {
      sum = sum + count[i];
    }

    System.out.println("Total: " + sum);

    for (int i = 0; i < 26; i++)
    {
      per[i] = count[i] / sum * 100;
      bar = Math.round(per[i]);

      ch = (char) (i + 65);
      System.out.print(ch + ": " + count[i] + '\t' + per[i] + "%" + '\t');

      for (int j = 0; j < (bar / 2); j++)
      {
        System.out.print("*");
      }
      System.out.println();
    }
  }
}


百分比计算错误,也就是per[i]值为0,事实上不是如此。

9.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: flyingqifei
Posted on: 2005-10-30 22:47

找到原因了。是count[i] / sum出了问题,两个整数相除得出结果的整数部分为0,所以结果就错下去了,那应该如何解决了。请高手帮忙解答。

10.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: bwpc
Posted on: 2005-10-31 09:29

计算百分比的时候 把int转成float吧, 呵呵

11.Re:大小写转换 ASCII码 [Re: flyingqifei] Copy to clipboard
Posted by: flyingqifei
Posted on: 2005-10-31 21:18

谢谢!我已经找到问题所在了。或者也可以把per[i] = count[i] / sum * 100;改为per[i] = count[i] *100 / sum;但不精确。
基础不够扎实啊!还需好好补!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923