繁体   English   中英

Java 二维阵列和扫描仪

[英]Java 2D array and Scanner

当我输入一个不在列表中的数字时,我试图显示“找不到数字”......我无法弄清楚代码有什么问题。

我的代码:

import java.util.*;
public class Searchu {
static Scanner console = new Scanner(System.in);
    public static void main(String[] args) {

        int  [][] x = new int [1][5];
        int k , z=0 , y , item , item1 ;



        System.out.println( "Enter 5 numbers: ");

        for ( y= 0 ; y < 5 ; y++) 
            for ( z =0 ; z < 1 ; z++) 
                x[z][y] = console.nextInt();



        System.out.println( "Search Number: ");
        k = console.nextInt();
        for ( item= 0 ; item < 5 ; item++) {
            for ( item1= 0 ; item1 < 1 ; item1++) {


                    if (x[item1][item] == k) {
                        System.out.println( " Position: "+  (item+1));

                        break;
                        }}}


        if (x[z][y] == 5)
            System.out.print("Number not found...");


}}

只需创建一个 Arraylist 并在其中添加所有元素。 对于这种特殊情况,ArrayList 不太复杂且更好。 每当您需要检查列表中是否存在任何元素时,只需使用 contains 方法。

import java.util.*;

public class Searchu {

    static Scanner console = new Scanner(System.in);

    public static void main(String[] args) {

        ArrayList<Integer> x = new ArrayList<>();
        int k, z = 0, y, item, item1;

        System.out.println( "Enter 5 numbers: ");
        for ( y= 0 ; y < 5 ; y++) 
             x.add(console.nextInt());

        System.out.println( "Search Number: ");
        k = console.nextInt();

        if(x.contains(k)){
            System.out.println("found");
        } else {
            System.out.println("not found");
       }
   }
}

您的错误是最后一次检查。 我添加了一个关于我们是否找到该号码的标志。 我同意评论,您不需要使用二维数组。

public static void main(String[] args) {
    int[][] x = new int[1][5];
    int k, z = 0, y, item, item1;

    System.out.println("Enter 5 numbers: ");

    for (y = 0; y < 5; y++)
        for (z = 0; z < 1; z++)
            x[z][y] = console.nextInt();


    System.out.println("Search Number: ");
    k = console.nextInt();
    boolean isFound = false;
    for (item = 0; item < 5; item++) {
        for (item1 = 0; item1 < 1; item1++) {
            if (x[item1][item] == k) {
                System.out.println(" Position: " + (item + 1));
                isFound = true;
                break;
            }
        }
    }

    if (!isFound)
        System.out.print("Number not found...");
}

如果您使用一维数组,您的代码将如下所示:

public static void main(String[] args) {
    int[] array = new int[5];
    int target;

    System.out.println("Enter 5 numbers: ");

    for (int i = 0; i < 5; i++) {
        array[i] = console.nextInt();
    }

    System.out.println("Search Number: ");
    target = console.nextInt();
    boolean isFound = false;
    for (int i = 0; i < 5; i++) {
        if (array[i] == target) {
            System.out.println("Position: " + (i + 1));
            isFound = true;
            break;
        }
    }

    if (!isFound) {
        System.out.print("Number not found...");
    }
}

请验证您的 itemindex 何时处于 limit(5) 并标记第一个“for”以中断所有搜索迭代。

public static void main(String[] args) {

    int[][] x = new int[1][5];
    int k, z = 0, y, item, item1;


    System.out.println("Enter 5 numbers: ");

    for (y = 0; y < 5; y++)
        for (z = 0; z < 1; z++)
            x[z][y] = console.nextInt();

    System.out.println("Search Number: ");
    k = console.nextInt();

    ext:
    for (item = 0; item < 5; item++) {
        for (item1 = 0; item1 < 1; item1++) {
            if (x[item1][item] == k) {
                System.out.println(" Position: " + (item + 1));
                break ext;
            }
        }
    }

    if (item == 5)
        System.out.print("Number not found...");

}

使用“break”,您只能从第二个 for 循环退出,请尝试以下代码。

      import java.util.*;
      public class Searchu {
      static Scanner console = new Scanner(System.in);
      public static void main(String[] args) {

    int  [][] x = new int [1][5];
    int k , z=0 , y , item , item1,pos=0 ;
    boolean flag=false;
    System.out.println( "Enter 5 numbers: ");
    for ( y= 0 ; y < 5 ; y++) 
        for ( z =0 ; z < 1 ; z++)           
            x[z][y] = console.nextInt();
    System.out.println( "Search Number: ");
    k = console.nextInt();
    for ( item= 0 ; item < 5 ; item++) {
        for ( item1= 0 ; item1 < 1 ; item1++) {              
                if (x[item1][item] == k) {

                    flag=true;
                    pos=item+1;
                    }}}
       if(flag)
       {
        System.out.println( " Position: "+  (pos));
       }
        else
        {
        System.out.print("Number not found...");
        }
}}  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM