2017-03-04 119 views
-2

我目前工作在我的任务叫车,并且它要求我做的是设置6层的方法,其是randomizePositionrandomizeColorreportStateignitionSwitchmoveHorizontally,并moveVertically关于我的点火开关问题?

我认为我已经完成了randomizePositionrandomizeColorreportState,但是ignitionSwitch存在这个问题。我将ignitionStat的值设置为false(因为汽车已关闭),并且我制作了ignitionSwitch方法,它采用布尔型ignitionStat并使其返回相反的值。

我试图建立的代码的方式在那里我将成立另一个字符串ignitionStatus,其价值将是要么"ON"(如果ignitionSwitch返回TRUE)和"OFF"的其他情况。但尽管尝试,我总是看到ignitionStatus将始终ON即使ignitionStatus返回false

所以我什至不知道我应该如何处理这个问题,我认为这是非常重要的部分,因为我需要点火状态来实际创建方法moveHorizo​​ntally和moveVertically。

import java.util.Scanner; 
import java.util.Random; 

public class testcar { 
    public static void main(String[] args) { 

     int repeat = 1; 
     boolean ignitionStat = false; 

     while (repeat == 1) { 

     System.out.println("What would you like to do?"); 
     System.out.println("1: turn the ignition on/off"); 
     System.out.println("2: change the position of car"); 
     System.out.println("q: quit this program "); 
     Scanner sc = new Scanner(System.in); 
     Scanner ex = new Scanner(System.in); 
     String i = sc.nextLine(); 
     switch (i) { 
      case "1": 
       System.out.println("You chose to turn on/off the ignition"); 
            ignitionSwitch(ignitionStat); 
            System.out.println("CAR INFORMATION"); 
            System.out.println("IGNITION STATUS: "); 
       reportState(); 
            repeat = 1; 
       break; 
      case "2": 
       System.out.println("THIS WILL BE CHANGE POSITION METHOD"); 
            repeat = 2; 
       break; 
      case "q": 
       System.out.println("You choose to quit"); 
       repeat = 0; 
       break; 
      default: 
       System.out.print("INVALID OPTION"); 
       break; 
     } 
    } 
      while (repeat == 2){ 
       System.out.println ("In which direction do you want to move the car? "); 
       Scanner hv= new Scanner (System.in); 
       String z = hv.nextLine(); 
       switch (z) { 
        case "h": 
         System.out.println("You will move the car horizontally!"); 
         repeat = 0; 
         break; 
        case "v": 
         System.out.println("You will move the car vertically!"); 
         repeat = 0; 
         break; 
        default: 
         System.out.println("Invalid Option!"); 
         repeat = 2; 
      break; 
       } 
      } 

} 
    public static boolean ignitionSwitch(boolean ignitionStat){ 
     return ignitionStat =! ignitionStat; 
    } 

public static void reportState(){ 
    int positionX = randomizePosition(); 
    int positionY = randomizePosition(); 
    char carColor = assignColor(); 
    System.out.println ("CAR INFORMATION"); 
    System.out.println ("Color : " + carColor); 
    System.out.println ("Location:" + "(" +positionX +","+positionY +")"); 
    String grid = "--------------------"; 
    for (int i =1; i<21; i++){ 
     if (i != positionY){ 
      System.out.println(grid); 
     } 
     else if (i == positionY){ 
      String newgrid = grid.substring(0,positionX-1) + carColor + grid.substring(0,20-positionX); 
      System.out.println(newgrid); 
     } 
    } 
} 
public static int randomizePosition() { 
    Random rand = new Random(); 
    int position = rand.nextInt(20) + 1; 
    return position; 
} 

public static char assignColor() { 
    Random rand = new Random(); 
    int colorNum = rand.nextInt(5) + 1; 
    char colorStr; 

    switch (colorNum) { 
     case 1: colorStr = 'G'; 
      break; 
     case 2: colorStr = 'B'; 
      break; 
     case 3: colorStr = 'W'; 
      break; 
     case 4: colorStr = 'S'; 
      break; 
     default : colorStr = 'R'; 
      break; 
    } 
    return (colorStr); 
} 
} 
+1

墙上没有段落的文字真的很难阅读。我在一定程度上编辑了你的文字,但它仍然处于边缘线外。你需要学习使用一个调试器,并一次一行地浏览代码,看看代码_actually_的功能。请访问[帮助]并阅读[问]以了解如何有效地使用StackOverflow。具体来说,包含_“所以我甚至不知道我应该如何处理这个问题”的问题被认为是无关紧要的。 –

回答

-1

发现此问题。您的退货声明ignitionStat =! ignitionStat;仅修改传入的变量。将其更改为:

public static boolean ignitionSwitch() 
{ 
    return ignitionStat = !ignitionStat; 
} 
+0

感谢您的快速回答。但是我的任务要求点火开关方法只需要点火状态值,并且总是返回相反的值。然而,我意识到还有更多的东西,那就是它总是回归真实,而不是返回相反的......我真的失去了 – Harry

+0

@Harry尝试实施这些新的变化。 – Peter

+0

想得到我收到的downvote的解释吗? – Peter