Javascript 查找数组中的最大值(整数集)
我的朋友让我帮他做作业,我被卡住了。以下是作业: 用户必须在第一个提示框中输入数组中的元素数。然后,他将得到每个数字输入的提示框。现在,输出必须是数组中的最大数。但这根本不起作用。使用下面的代码,我总是得到第一位数字最大的元素。(不管数字是负数还是正数,代码都不能正常工作) 这是我的代码(它甚至在JSFIDLE中不起作用,只是在我的文件中)Javascript 查找数组中的最大值(整数集),javascript,Javascript,我的朋友让我帮他做作业,我被卡住了。以下是作业: 用户必须在第一个提示框中输入数组中的元素数。然后,他将得到每个数字输入的提示框。现在,输出必须是数组中的最大数。但这根本不起作用。使用下面的代码,我总是得到第一位数字最大的元素。(不管数字是负数还是正数,代码都不能正常工作) 这是我的代码(它甚至在JSFIDLE中不起作用,只是在我的文件中) 做吧! 这里是JavaScript function duzinaNiza() { var brClanova = prompt("Enter t
做吧!
这里是JavaScript
function duzinaNiza() {
var brClanova = prompt("Enter the number of array elements:");
if (brClanova > 0) {
var niz = new Array();
for (i=0; i<brClanova; i++) {
var redniBr = i+1;
niz[i] = prompt("Enter "+ redniBr +". array number:");
\\ prompt for geting each array element
}
var maximum = niz[0];
for (a=0; a<brClanova; a++) {
if (maximum < niz[a]) {
maximum = niz[a];
}
}
document.write("Greatest value in array is: " + maximum);
}
}
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
对于(i=0;i,这是因为输入是字符串,所以必须将其解析为整数。例如:
niz[i] = parseInt(prompt("Enter "+ redniBr +". array number:"), 10);
这是因为输入是一个字符串,所以必须将其解析为整数。例如:
niz[i] = parseInt(prompt("Enter "+ redniBr +". array number:"), 10);
修改代码
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素数:”)*1;//将字符串转换为整数
如果(brClanova>0){
var niz=新数组();
对于(i=0;i修改代码
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素数:”)*1;//将字符串转换为整数
如果(brClanova>0){
var niz=新数组();
对于(i=0;i试试这个:
function duzinaNiza() {
var brClanova = prompt("Enter the number of array elements:");
if (brClanova > 0) {
var niz = new Array();
for (i=0; i<brClanova; i++) {
var redniBr = i+1;
niz[i] = parseInt(prompt("Enter "+ redniBr +". array number:"));
// prompt for geting each array element
}
var maximum = niz[0];
for (a=0; a<brClanova; a++) {
if (maximum < niz[a]) {
maximum = niz[a];
}
}
document.write("Greatest value in array is: " + maximum);
}
}
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
对于(i=0;i试试这个:
function duzinaNiza() {
var brClanova = prompt("Enter the number of array elements:");
if (brClanova > 0) {
var niz = new Array();
for (i=0; i<brClanova; i++) {
var redniBr = i+1;
niz[i] = parseInt(prompt("Enter "+ redniBr +". array number:"));
// prompt for geting each array element
}
var maximum = niz[0];
for (a=0; a<brClanova; a++) {
if (maximum < niz[a]) {
maximum = niz[a];
}
}
document.write("Greatest value in array is: " + maximum);
}
}
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
对于(i=0;i尝试,[提示:我刚刚使用了'+'运算符
将值强制转换为数字
(来自提示符的值
)
duzinaNiza = function () {
var brClanova = prompt("Enter the number of array elements:");
if (brClanova > 0) {
var niz = new Array();
var maximum;
for (i=0; i<brClanova; i++) {
var temp = +prompt("Enter "+ i+1 +". number:");
if(i===0) { maximum = temp }
else { maximum = (temp > maximum)?temp:maximum; }
}
alert("Greatest value in array is: " + maximum);
}
}
duzinaNiza=函数(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
var最大值;
对于(i=0;i最大值)?温度:最大值;}
}
警报(“数组中的最大值为:“+最大值”);
}
}
试试,[提示:我刚刚使用了'+'操作符
将值转换为数字
(来自提示符的值
)
duzinaNiza = function () {
var brClanova = prompt("Enter the number of array elements:");
if (brClanova > 0) {
var niz = new Array();
var maximum;
for (i=0; i<brClanova; i++) {
var temp = +prompt("Enter "+ i+1 +". number:");
if(i===0) { maximum = temp }
else { maximum = (temp > maximum)?temp:maximum; }
}
alert("Greatest value in array is: " + maximum);
}
}
duzinaNiza=函数(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
var最大值;
对于(i=0;i最大值)?温度:最大值;}
}
警报(“数组中的最大值为:“+最大值”);
}
}
问题在于,当您想要比较两个数字时,您正在比较两个字符串。
换句话说,以下表达式在javascript中是合法的,计算结果为true:
if('4' > '393939393'){
//true! string '4' is greater than string '3' (first char of '393939393')
}
您应该做的是转换从函数提示符接收到的值,因此它被视为一个数字。您可以使用以下函数执行此操作:
parseInt(prompt("Enter "+ redniBr +". array number:"), 10);
第一个参数是要强制转换为数字的值,而第二个参数是数字的基数(或“基”)。问题在于,当您要比较两个数字时,您正在比较两个字符串。
换句话说,以下表达式在javascript中是合法的,计算结果为true:
if('4' > '393939393'){
//true! string '4' is greater than string '3' (first char of '393939393')
}
您应该做的是转换从函数提示符接收到的值,因此它被视为一个数字。您可以使用以下函数执行此操作:
parseInt(prompt("Enter "+ redniBr +". array number:"), 10);
第一个参数是要转换为数字的值,而第二个参数是数字的基数(或“基数”)。因此,这里的主要问题是,您没有将数字作为“数字”,而是作为字符串。方法prompt
返回一个字符串,因此您需要转换它们:
function duzinaNiza() {
var brClanova = +prompt("Enter the number of array elements:");
if (!brClanova)
return;
var niz = [];
for (var i=0; i < brClanova; i++) {
var redniBr = i + 1;
niz[i] = +prompt("Enter "+ redniBr + ". array number:");
}
var max = niz[0];
for (var a = 1; a < brClanova; a++) {
if (max < niz[a])
max = niz[a];
}
document.write("Greatest value in array is: " + max);
}
你将有:
var max = Math.max.apply(null, niz);
document.write("Greatest value in array is: " + max);
在这种情况下,您甚至不需要一元加号运算符,因为Math.max
会处理这个问题。因此,这里的主要问题是,您没有将数字作为“数字”,而是作为字符串。方法prompt
返回一个字符串,因此您需要转换它们:
function duzinaNiza() {
var brClanova = +prompt("Enter the number of array elements:");
if (!brClanova)
return;
var niz = [];
for (var i=0; i < brClanova; i++) {
var redniBr = i + 1;
niz[i] = +prompt("Enter "+ redniBr + ". array number:");
}
var max = niz[0];
for (var a = 1; a < brClanova; a++) {
if (max < niz[a])
max = niz[a];
}
document.write("Greatest value in array is: " + max);
}
你将有:
var max = Math.max.apply(null, niz);
document.write("Greatest value in array is: " + max);
在这种情况下,您甚至不需要一元加号运算符,因为Math.max
会处理这个问题。您不需要parseInt-如果您减去可以转换为数字的字符串,它们就会被转换。因此,您可以从下一个数字中减去最大值,并查看它是否留下余数
此外,parseInt将销毁小数,因此您不会知道1.5大于1
您的评论使用了错误的字符-`('\'应该是'/'))
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
对于(var i=0;i您不需要parseInt-如果您减去可以转换为数字的字符串,它们将被转换。因此,您可以从下一个数字中减去最大值,并查看它是否保留余数
此外,parseInt将销毁小数,因此您不会知道1.5大于1
您的评论使用了错误的字符-`('\'应该是'/'))
函数duzinaNiza(){
var brClanova=prompt(“输入数组元素的数量:”);
如果(brClanova>0){
var niz=新数组();
对于(var i=0;iI认为输入是一个字符串,但我不确定。因此,如果没有parseInt
?,就无法从提示符中获取数字(教授是个哑巴,他不知道这个函数)。你必须解析它,因为字符串比较是不同的