Java - 如何在开关盒中存储数组

Posted

技术标签:

【中文标题】Java - 如何在开关盒中存储数组【英文标题】:Java -how can I store an array in switch case 【发布时间】:2022-01-10 03:34:54 【问题描述】:

我需要构建首先获取二维数组然后打印它的代码。 为此,我构建了一个带有开关盒的菜单。

当用户单击 0 时,用户键入数组的大小(大小始终为 n*n),然后用户键入值。然后我需要创建一个使用此信息来构建 char 数组的函数。(值是 hex base 0-F)

当用户点击 1 时,代码需要打印相同的二维数组。 我很难理解如何从案例 0 中移动数组。

导入 java.util.Scanner;

公开课作业3

static Scanner reader = new Scanner (System.in);
public static void main(String[] args) 
    int checker=1;
    int user_selction;
    
    
    do 
    
        user_selction=Menu();
        switch(user_selction) 
        case 0:
            Menu_0(user_selction);
            break;
        case 1:
            
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            checker=GoodBye(checker);
            break;
        default:
            break;
        
        
    while(checker==1);


public static int Menu ()

    int menu_num;
    System.out.println("~ Photo Analyzed ~");
    System.out.println("0. Load Photo");
    System.out.println("1. Print Photo");
    System.out.println("2. Circle Check");
    System.out.println("3. Random Check");
    System.out.println("4. Exit");
    System.out.println("Please select an option>");
    menu_num=reader.nextInt();
    if(menu_num>4||menu_num<0)
    
        System.out.println("Invalid input");
        
    
    
    return menu_num;

public static int GoodBye(int GB)

    GB=0;
    System.out.println("Goodbye!");
    return GB;


public static int Menu_0 (int a)

    int Ps;
    System.out.println("Please insert the photo size>");
    Ps=reader.nextInt();
    if(Ps<0||Ps>12)
    
        System.out.println("Invalid Photo Input!");
        return a;   
    
    System.out.println("Please insert the photo value>");
    String strPhoto;
    do 
    strPhoto = reader.nextLine();
      while(strPhoto.length() == 0);
    if(strPhoto.length()!=Ps*Ps)
    
        System.out.println("Invalid Photo Input!");
        return a;   
    
    for(int i=0;i<Ps*Ps;i++)
    
        if(strPhoto.charAt(i)<'0'||strPhoto.charAt(i)>'F')
        
            System.out.println("Invalid Photo Input!");
            return a;   
        
    
    return a;

【问题讨论】:

您的数组是否定义在 case 0 范围内? 我试图在 case 0 内定义数组,然后考虑制作一个制作数组的函数,也没有帮助我@SeyedMohammadAminAtyabi 编辑这篇文章并添加您的代码,以便我们提供更好的帮助。通常你应该在 switch 语句之外定义你的数组,这样你就可以在其他情况下访问。 @SeyedMohammadAminAtyabi 但如果用户想要更改数组,如果它在外面,他如何更改它?对不起,如果代码看起来很糟糕,我对编码很陌生。 您正在做一些事情,例如您声明的方式和 Scanner 类的实例。 【参考方案1】:

这是一个例子

import java.util.Scanner;

public class Assignment3 
static Scanner reader = new Scanner (System.in);

public static void main(String[] args) 

    int checker=1;
    int user_selction;
    char [][]array = null;
    
    do 
        user_selction=Menu();
        switch(user_selction) 
        case 0:
            array = Menu_0();
            break;
        case 1:
            print_array(array);
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            checker=GoodBye(checker);
            break;
        default:
            break;
        
        
    while(checker==1);


public static int Menu ()

    int menu_num;
    System.out.println("~ Photo Analyzed ~");
    System.out.println("0. Load Photo");
    System.out.println("1. Print Photo");
    System.out.println("2. Circle Check");
    System.out.println("3. Random Check");
    System.out.println("4. Exit");
    System.out.println("Please select an option>");
    menu_num=reader.nextInt();
    if(menu_num>4||menu_num<0)
    
        System.out.println("Invalid input");
        
    
    
    return menu_num;

public static int GoodBye(int GB)

    GB=0;
    System.out.println("Goodbye!");
    return GB;


public static char[][] Menu_0 ()

    int Ps;
    System.out.println("Please insert the photo size>");
    Ps=reader.nextInt();
    if(Ps<0||Ps>12)
    
        System.out.println("Invalid Photo Input!");
        return null;   
    
    System.out.println("Please insert the photo value>");

    char [][]array = new char[Ps][Ps];

    for(int i=0;i<Ps;i++)
    
        for (int j = 0 ; j < Ps ; j++)
        
            char c = reader.next().charAt(0);
            if(c<'0'||c>'F')
            
                System.out.println("Invalid Photo Input!");
                return null;   
             else 
                array[i][j] = c;
            
        
    
    return array;


public static void print_array(char [][]array)
    for (int i = 0 ; i < array[0].length ; i++)
    
        for (int j = 0 ; j < array[0].length ; j++)
        
            System.out.print(array[i][j] + " ");
        
        System.out.println();
    


【讨论】:

哇,我不得不更改一些东西,因为当我尝试打印时它不起作用,但 null 帮助很大。谢谢!!!【参考方案2】:

像这样使用扫描仪:

            Scanner sc = new Scanner(System.in);
            System.out.println("Select 1 to input array size or 2 to do sth");
            int option = sc.nextInt();


            switch(option)     

            case 1 :
                Scanner sc = new Scanner(System.in);
                System.out.println("Enter array size: ");
                int size = sc.nextInt()
                int[] array = new array[size*size];
                break;

            case 2 :
                something;
                break;

            default:
                System.out.println("No such option ");
                break;
            

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于Java - 如何在开关盒中存储数组的主要内容,如果未能解决你的问题,请参考以下文章

获取 JSON 值到数组

如何在 Java 中将句子存储在临时数组中?

Java中的数组以及它们如何存储在内存中

如何在贝宝沙盒中获取身份令牌?

如何在沙盒中手动触发 Paypal 错误 10486?

如何在沙盒中使用 google adwords api? [关闭]