1

我是java编程新手。我想知道是否有一种方法可以用键盘上的整数填充数组(范围:10 到 65)。这是我的代码:

public static void main(String[] args)      
{
    //Keyboard Initialization
    Scanner kbin = new Scanner(System.in);

    //a.Declare an array to hold 10 intgers values
    int list[]=new int[10];     
    int i=0;
    //b.Fill the array with intgers from the keyboard(range: 10 to 50).
    System.out.print("\n\tInput numbers from 10 to 50: \n");
    list[i]= kbin.nextInt();
    if(10<=list[i] && list[i] <= 50)
    {
        for(i=1; i<=9;i++)
        {
            list [i] = kbin.nextInt();      
        }
    }
}

请帮忙。谢谢!

4

4 回答 4

1

这应该解决它...

System.out.print("\n\tInput numbers from 10 to 50: \n");
for(int i=0; i<10;)
{
    int k = kbin.nextInt();      
    if (k >= 10 && k <= 50)
    {
        list[i] = k;
        ++i;
    }
}
于 2013-04-17T02:14:24.337 回答
1

如果我理解你的意图正确......

您需要循环直到有 10 个有效数字。如果用户输入的数字超出范围,则需要将其丢弃。

import java.util.Scanner;

public class TestStuff {

    public static void main(String[] args) {
        //Keyboard Initialization
        Scanner kbin = new Scanner(System.in);

        //a.Declare an array to hold 10 intgers values
        int list[] = new int[10];
        int i = 0;

        System.out.print("\n\tInput numbers from 10 to 50: \n");
        while (i < 10) {
            //b.Fill the array with intgers from the keyboard(range: 10 to 50).
            int value = kbin.nextInt();
            if (value >= 10 && value <= 50) {
                list[i] = value;
                i++;
            } else {
                System.out.println("!! Bad number !!");
            }
        }
        for (int value : list) {
            System.out.println("..." + value);
        }
    }
}

示例输出...

    Input numbers from 10 to 50: 
1
!! Bad number !!
2
!! Bad number !!
3
!! Bad number !!
4
!! Bad number !!
5
!! Bad number !!
6
!! Bad number !!
7
!! Bad number !!
8
!! Bad number !!
9
!! Bad number !!
10
11
12
13
14
15
16
17
18
19
...10
...11
...12
...13
...14
...15
...16
...17
...18
...19
于 2013-04-17T02:14:38.130 回答
0

我不确定您要做什么。但是,我猜您正在尝试获取用户输入的前 10 个数字?

要记住的一件重要事情是 java(和其他语言)使用基于 0 的索引。所以你的 for 循环 where i = 1, i <= 9; i++ 我认为我应该从 0 开始,但我再次不确定您要在这里做什么。

于 2013-04-17T02:13:28.957 回答
0

虽然这个问题已经得到回答,但我注意到没有人提供或谈论.hasNext() 正则表达式方法,所以下面我使用正则表达式提供这个问题的答案:

import java.util.Scanner;

public class Main3 {
    public static void main (String [] args) {
        int list [] = new int [10];
        for (int i = 0; i < 10; i ++) {
            Scanner sc = new Scanner (System.in);
            if (sc.hasNext("([1-4][0-9])?(50)?")) {
                list[i] = sc.nextInt();
            } else {
                System.err.println("Entered value is out of range 10 - 50. Please enter a valid number");
                i --;
            }
        }

        for (int i = 0; i < 9; i ++) {
            System.out.print(list[i] + " ");
        }
        System.out.println(list[9]);
    }
}
于 2018-09-06T03:58:14.943 回答