Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 切换问题、阵列打印_Java_Switch Statement - Fatal编程技术网

Java 切换问题、阵列打印

Java 切换问题、阵列打印,java,switch-statement,Java,Switch Statement,-所以在案例2中,我试图让用户只输入具有特定数组位置的元素(N,Y,p,D,G)。我在开关内部使用开关,但如果他输入错误的元素,我如何重新循环 -在案例3中,我试图打印整个2D数组,但原始数组中填充了元素G -在案例4中,我尝试将地图视图更改为符号 我只是觉得这是一种实践,在某种程度上,我试图学习初学者复杂编程,因此非常感谢您的帮助,非常感谢您的批评,因为我想对java有一个良好的基础知识:) import java.util.Scanner; 公共课学习{ 公共静态void main(字符串[

-所以在案例2中,我试图让用户只输入具有特定数组位置的元素(N,Y,p,D,G)。我在开关内部使用开关,但如果他输入错误的元素,我如何重新循环

-在案例3中,我试图打印整个2D数组,但原始数组中填充了元素G

-在案例4中,我尝试将地图视图更改为符号

我只是觉得这是一种实践,在某种程度上,我试图学习初学者复杂编程,因此非常感谢您的帮助,非常感谢您的批评,因为我想对java有一个良好的基础知识:)

import java.util.Scanner;
公共课学习{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
int行;
int col;
int row1;//对于案例2,它将允许用户在请求数组中输入元素
int col1;
System.out.println(“输入行:”);//了解二维数组的行和列以作为其余数组的基础。
row=input.nextInt();
System.out.println(“输入列:”);
col=input.nextInt();
串句;
串句2;
串句3;
字符串元素;
字符串N;
弦Y;
字符串G;
字符串P;
字符串D;
智力选择;
System.out.println(“菜单\n1)按顺序输入元素\n2)输入列和行号规格。\n3)按原样显示原始映射\n4)显示符号映射。“);
choice=input.nextInt();
System.out.println(选择);
字符串[][]映射=新字符串[行][列];
开关(选择)
{
案例1:
sentence3=input.nextLine();//由于某种原因,它会自动将第一个映射[0][0]输入为null,这一行允许用户输入映射[0][0]
map[0][0]=第3句;
对于(int i=0;imap.length;i++)
{
对于(int j=0;j>map[i]。长度;j++)
{
map[i][j]=N;
//打印状态,需要找到如何做。
}
}**强文本**
打破
案例4:
//用符号代替字母,N=*,P=~,Y=,G=#,D=@
//
}
}
}

既然您将此作为练习,我将不回答您的问题,而是提供一些关于正在发生的事情的见解和一些要查看的链接:

案例2: 你真的不需要第二个开关。请看开关中每种情况的代码,代码完全相同。您要使用的是while循环,并测试输入是否有效。这样,如果用户输入无效的输入,它将要求他们重试

案例3:关于如何打印2D阵列,有很多例子,这取决于您希望它的外观

案例4:这实际上只是案例3的扩展,除了打印出存储的输入字母外,还打印出符号。这就是第二个switch语句可能有用的地方。

情况2:

我不知道为什么要在中使用switch语句来检查案例是N、Y、p、D还是G。为了检查正确的输入,可以使用while循环,并在放置正确的输入时中断

 System.out.println("Enter the row");
 row1 = input.nextInt();
 System.out.println("Enter the col");
 col1 = input.nextInt();

 while(true){
 System.out.println("Enter the element you want to enter");
 tempelement = input.nextLine();
 if(tempelement.equals("N") || tempelement.equals("Y") || tempelement.equals("P") || tempelement.equals("D") || tempelement.equals("G")){
     map[row1][col1] = tempelement;
     break;
  }
 }
案例3:

要打印二维数组,需要嵌套的for循环。它需要2个循环

for(int i=0; i<map.length; i++){
    for(int j=0; j<map[i].length; j++){
          System.out.print(map[i][j]);
     }
      System.out.print("\n");  // this is for spacing after a row of element prints
 }

for(int i=0;i
sentence3=input.nextLine();//由于某种原因,它自动将第一个映射[0][0]输入为null,这一行允许用户输入映射[0][0]

使用
input.next()
而不是
nextLine()

如官方文件所述:

使此扫描仪前进到当前行,并返回所需的输入 已跳过。此方法返回当前行的其余部分, 不包括末端的任何线分隔符。该位置设置为 下一行的开头

调用
nextLine()
后,它没有正确地终止分配的内存行。因此,当第一次调用
nextLine()
时,它实际上终止了前一行中实际有值的内容--通过
nextInt()输入
而不是接受新的字符串值。这就是为什么
sentence3
得到
null
值的原因

在案例2中,我试图让用户输入元素 (N,Y,P,D,G)仅具有特定的数组位置。我在 切换,但如果他输入错误的元素,我如何重新循环

你可以试试这个
for(int i=0; i<map.length; i++){
    for(int j=0; j<map[i].length; j++){
          System.out.print(map[i][j]);
     }
      System.out.print("\n");  // this is for spacing after a row of element prints
 }
...
    for(int j=0; j<map[i].length; j++){
       switch(map[i][j]){
              case "N": System.out.print("Symbol"); break;
              case "P": ... code
             ... code
        }
    }
    boolean bVaildInput = true;
    do{
        System.out.println("Enter the element you want to enter");
        tempelement = input.next();
    switch (tempelement)
        {
        case "Y":
            map[row1][col1] = tempelement;
            break;
        case "N":
            map[row1][col1] = tempelement;
            break;
        case "P":
            map[row1][col1] = tempelement;
            break;
        case "D":
            map[row1][col1] = tempelement;
            break;
        case "G":
            map[row1][col1] = tempelement;
            break;
        default :
            System.out.println("Invalid Input");
            bValidInput = false;
        }
   }while(!bVaildInput);
        for (int i=0;i < map.length;i++)
        {
            for (int j=0; j < map[i].length; j++)
            {
                System.out.print(map[i][j]+"\t");
            }
            System.out.print("\n");
        }