-2

我正在做一些事情,想知道是否有任何方法可以设置字符的宽度。

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

我想要的伪代码:

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

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

有什么建议么?谢谢!

4

3 回答 3

1

使用 aHashMap为每个字母分配一个相对于 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);
于 2013-04-24T23:24:23.570 回答
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;
于 2013-04-24T23:31:29.880 回答
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;
}
于 2013-04-24T23:34:43.820 回答