2013-04-16 28 views
1

我想將座標x和y插入到二維數組中並打印出來。對於要求輸入的給定代碼示例,它不會執行一次,而是執行兩次,然後接受該值。如果這些值實際上是存儲在每個數組中或者只是一個,我不會。是否可以獨立於矩陣顯示輸出?我aprecciate任何幫助或更正!祝福你。 下面的代碼:如何顯示二維數組中的值?

代碼

import java.util.Scanner; 

public class MummyMadness { 

    public static void main(String []args){ 


    int [][] desert = new int [1][1]; 
    int x =0; 
    int y =0; 
    int mummies[] = new int [1]; 
    int Mlimit = 100000; 


    coordinates(desert,mummies,x,y); 
    } 
    public static int[] inputmummy(int mummies[], int Mlimit){ 
     int i; 
     Scanner input = new Scanner(System.in); 
     System.out.println("How many mummies you want?"); 
     System.out.println("Note that the limit of mummies is 100k"); 
     i = input.nextInt(); 

     if(mummies[i] > Mlimit) 
     { 
      System.out.println("You exceeded from the mummies!"); 
     } 


     return mummies; 
    } 



    public static int[][] coordinates(int desert[][],int mummies[], int x, int y){ 


     //Idea use length of mummies for coordinates but if you take out desert i doesnt work 


     System.out.println("Enter mummy coordinates"); 

      for(int i = 0; i < desert.length; i++){ 

     System.out.println("Enter x:"); 
     Scanner input = new Scanner(System.in); 

       if(input.nextInt() > desert.length) 
       { 
        System.out.println("Error x exceeded desert length"); 
        break; 
       } 
       desert[i][0] = input.nextInt(); 

      System.out.println("Mummy location x: " + desert[i][0]); 

      for(int j = 0; j < mummies.length; j++){ 

     System.out.println("Enter y:");  
     Scanner input2 = new Scanner(System.in); 

       if(input.nextInt() > desert[0].length) 
       { 
        System.out.println("Error y exceeded desert length"); 
        break; 
       } 

       desert[0][j] = input2.nextInt(); 

       System.out.println("Mummy location y: " + desert[0][j]); 
       System.out.println(desert[i][j]) 


      } 

     } 

     return desert; 

     } 

    } 

回答

1

您正在使用input.nextInt兩次() - 一次爲實際插入到數組檢查一次。每次你調用這個函數,它都需要一個輸入。因此它要求輸入兩次。 取而代之:

int tmp = input.nextInt(); 
if(tmp > desert.length) 
{ 
    System.out.println("Error x exceeded desert length"); 
    break; 
} 
desert[i][0] = tmp; 
+0

工作正常!謝謝你,謝拉。這意味着無論何時我想插入輸入,我都不應該使用input.next,因爲它會自動請求輸入。謝謝。另外在代碼的底部,當我在做第二個輸入時,我對掃描器input2做了一個新的引用,並使用它,使y的值存儲在x中。 –