1

我正在尝试创建这个程序来提示用户输入两个单词,然后在一行上打印出这两个单词。这些单词将被足够的点分隔,因此总行长为 30。我已经尝试过了,但似乎无法得到它。

<html>
<head>
<title>Lenth of 30</title>
<script type="text/javascript">
//Program: Lenth of 30
//Purpose: The words will be separated by enough dots so that the total line length is 30: 
//Date last modified: 4/11/12 
var firstword = ""
var secondword = ""

firstword = prompt("Please enter the first word.")
secondword = prompt("Please enter the second word.")

document.write(firstword + secondword)


</script>
</head>
<body>
</form>
</body>
</html>

一个例子:

输入第一个字:

输入第二个字

153

(程序将打印出以下内容)

乌龟.....................153

4

5 回答 5

3

这是一个通用解决方案,向您展示如何执行此操作:

function dotPad(part1, part2, totalLength) {
  // defaults to a total length of 30
  var string = part1 + part2,
      dots = Array((totalLength || 30) + 1).join('.');
  return part1 + dots.slice(string.length) + part2;
}

按如下方式使用它:

dotPad('foo', 'bar'); // 'foo........................bar'

在你的情况下:

dotPad(firstword, secondword);

这是一个非常简单的解决方案——如果需要,验证输入字符串的连接形式是否比length字符短。

于 2012-04-11T13:20:32.567 回答
1

你需要计算你需要多少个周期。

var enteredLength = firstword.length + secondword.length;
var dotCount = 30 - enteredLength;

var dots = "";
for(var i = 0; i < dotCount; i++) dots += '.';

你可以从那里拿如果....

于 2012-04-11T13:20:10.127 回答
0

从 30 中减去第一个单词的长度和第二个单词的长度,然后在 for 循环中打印出那么多点。

于 2012-04-11T13:20:03.563 回答
0

您可以使用该length属性来确定每个字符串的长度,然后计算.您需要添加的 s 的数量。

于 2012-04-11T13:20:27.320 回答
0

您可以使用一些简单的数学来获得点的数量。从 30 中减去每个字长。

var dotLen = 30 - firstword.length - secondword.length;
document.write( firstword );
while ( dotLen-- ) {
    document.write( "." );
}
document.write( secondword );

编辑:我实际上更喜欢 Mathias 的解决方案。但是你可以让它更简单:

document.write( firstword + Array( 31 - firstword.length - secondword.length ).join( '.' ) + secondword );
于 2012-04-11T13:21:01.317 回答