我正在研究某些事情并且想知道是否有任何方法可以设置角色的宽度。
例如,假设您输入字符“i”。我想将“i”的宽度设置为某个东西(如果有效,可以是1,3,6等英寸甚至是像素)。一旦我被设置,其他字母将被设置(因此A可以是i的宽度3倍,C可以是i乘以2的宽度等等)。用户只需要输入i的宽度;所有其他字符将根据i的宽度设置自己。
我想要的伪代码:
这可能吗?我一直在尝试实现charsWidth。我会让用户输入一条消息,消息进入一个数组,charsWidth将测量数组宽度,然后最后输出宽度。逻辑是有道理的,但我很难用这种方式设置它。也许有一种更简单的方法来实现它?这可能是基于GUI的,但我不熟悉GUI代码,所以如果它是基于文本的,那就更容易了。
有什么建议吗?谢谢!
答案 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;
}