Java:打印数组中数字的位置

问题描述 投票:0回答:1

我正在编写一个在X位置打印数字的程序(使用数组)。问题是,如果我输入的位置大于数字序列(当我输入-1时结束)。

例如,我想在位置7上打印数字,这是数字序列:

1 2 3 -1

我应该收到一条消息,指出“位置不正确”,因为位置7中有0。

否则,如果位置7有数字,我将打印位置和数字。

我的问题有点奇怪,因为第一个序列读得很好并且可以打印正确的句子,但是如果我继续输入,它将始终读取我使用的最后一个序列的位置,因此不是很有用。我附上练习说明

编写一个程序,给出几个测试用例,每个用整数i和一个自然数x1,x2,…,xn的序列组成,打印每个xi。

输入

输入有几种情况。每种情况均以整数i开头,后接序列x1,…,xn以-1结尾。

输出

对于每种情况,如果位置i是正确的,请按照示例所示打印i的内容。否则,打印“位置错误”。

Scanner sc = new Scanner(System.in);
int pos;
int [] seq = new int [20];
int i;
int count = 0;


while (true) {
    pos = sc.nextInt();
    for(i = 1; i < seq.length; i++) {
        seq[i] = sc.nextInt();
            if (seq[i] == -1) {
                break;
            }               
        count++;
    }
    if (pos > count) {
        System.out.println("Posicio incorrecta" + ".");
    } else {
        System.out.println("A la posicio " + pos + " hi ha un " + seq[pos] + ".");
    }           
}       
java arrays loops java.util.scanner
1个回答
0
投票
//  hint:look at count in you code else its better to determine the scope of variables. You can uncomment the sysout line to understand better. happycoding :)
 while (true) {
            int pos;
            int i;
            int count = 0;
            int [] seq = new int [20];
            pos = sc.nextInt();
            for(i = 1; i < seq.length; i++) {
                seq[i] = sc.nextInt();
                if (seq[i] == -1) {
                    break;
                }
                count++;
            }
            //System.out.println(pos + " "+ count);
            if (pos > count) {
                System.out.println("Posicio incorrecta" + ".");
            } else {
                System.out.println("A la posicio " + pos + " hi ha un " + seq[pos] + ".");
            }
            // for(i = 1; i < seq.length; i++)
            //System.out.print(seq[i]+" ");
        }
© www.soinside.com 2019 - 2024. All rights reserved.