用java设置字符宽度

时间:2013-04-24 23:21:29

标签: java width character

我正在研究某些事情并且想知道是否有任何方法可以设置角色的宽度。

例如,假设您输入字符“i”。我想将“i”的宽度设置为某个东西(如果有效,可以是1,3,6等英寸甚至是像素)。一旦我被设置,其他字母将被设置(因此A可以是i的宽度3倍,C可以是i乘以2的宽度等等)。用户只需要输入i的宽度;所有其他字符将根据i的宽度设置自己。

我想要的伪代码:

  • 询问用户的宽度
  • 用户输入2英寸
  • i的宽度等于2
  • A设置为6in,C设置为4in等等---这将在代码中预设
  • 用户输入消息
  • 计算邮件的宽度
  • 程序输出消息的总计算宽度

这可能吗?我一直在尝试实现charsWidth。我会让用户输入一条消息,消息进入一个数组,charsWidth将测量数组宽度,然后最后输出宽度。逻辑是有道理的,但我很难用这种方式设置它。也许有一种更简单的方法来实现它?这可能是基于GUI的,但我不熟悉GUI代码,所以如果它是基于文本的,那就更容易了。

有什么建议吗?谢谢!

3 个答案:

答案 0 :(得分:1)

使用HashMap为每个字母指定i相对宽度。然后,当您收到消息时,迭代每个字母,并累计来自HashMap的连续字母的值。

示例:

Map<Character,Double> map = new HashMap<Character,Double>();
map.put('a', 3.0);
map.put('b', 2.1);
// ... and so on

String msg = ... // get the message
Double width = 0.0;

for (Character c : msg.toCharArray())
    width += map.get(c);

答案 1 :(得分:0)

一种非常简单的方法是使用一个方法,使用switch case返回字母的倍数。 所以

public int multiple(char letter)
{
 switch(letter){
 case 'a': 
   return 2;
 case 'b':
   return 3;
...
...

}
}

然后使用扫描仪读取字符串, 遍历字符串并添加到运行计数。

Scanner scan = new Scanner(System.in);
String message = scan.nextLine();
int width;
for(int i=0,i<message.length(),i++)
{
int+=multiple(message.charAt(i));
}
return width;

答案 2 :(得分:0)

首先编写一个函数,它将取i和字母的宽度并返回字母的宽度。

int getWidth(int width_i, char ch){
  //TODO: write the logic and return the width
  return 0
}

在主要功能中: 1.从用户获取i的宽度 2.为每个字符调用getWidth(..)取输入字符串并添加到结果中。

int totalWidth(int width_i,String input){
  int sum=0;
  for(int i=0;i<input.length();i++){
    sum+=getWidth(width_i,input.charAt(i));
  }
  return sum;
}