2012-04-11 3 views
1

Я пытаюсь создать эту программу, чтобы пригласить пользователя на два слова, а затем распечатать оба слова на одной строке. Слова будут разделены достаточным количеством точек, так что общая длина строки равна 30. Я пробовал это и, похоже, не смог его получить.Javascript - строка итого

<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

+0

Вы ожидаете, что кто-то разрешит это для вас? Я не вижу проблемы в вашем вопросе, читаю инструкции о строковых функциях – varela

ответ

0

Вычтите длину первого слова и длину второго слова от 30 и распечатайте, что многие точек в цикле for.

+0

Можете ли вы дать мне способ кодировать это? –

+0

Не уверен, почему я получил вниз. Цель этого сайта - не писать для них целые программы людей. – Jordan

1

необходимо рассчитать, сколько периодов вам нужно.

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

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

вы можете взять, если оттуда ....

0

Вы можете использовать length свойство для определения длины каждой строки, а затем вычислить количество . с, что вам нужно добавить.

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 персонажей.

+0

Вы можете упростить это: 'return part1 + Array ((totalLength || 30) + 1 - part1.length - part2.length) .join ('.') + Part2;' – Will

+0

@WilliamVanRensselaer Right. Я думаю, что это более читаемо, хотя (личное предпочтение). –

0

Вы можете получить количество точек, используя простую математику. Вычтите каждую длину слова от 30.

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

EDIT: Мне действительно нравится решение Матиаса лучше. Но вы можете сделать это проще:

document.write(firstword + Array(31 - firstword.length - secondword.length).join('.') + secondword); 
Смежные вопросы