2014-10-05 3 views
0

Я пишу программу Java, которая отображает линейные и квадратичные функции. Пока что все, что я сделал, это оси, в которых функции будут отображаться в основном. Вот мой код:Написание графической программы с использованием методов

int yMax = 5; 
    int yMin = -5; 
    int xMax = 5; 
    int xMin = -5; 


    for(int j=yMax; j>=yMin; j--) 
    { 
     for(int i=xMin; i<=xMax; i++) 
     { 
      if(j==5 && i==0) 
      { 
       System.out.print("^"); 
      } 
      else if(i==5 && j==0) 
      { 
       System.out.print(">"); 
      } 
      else if(i==0 & j==0) 
      { 
       System.out.print("."); 
      } 
      else if(j==0) 
      { 
       System.out.print("-"); 
      } 
      else if(i==0) 
      { 
       System.out.print("|"); 
      } 
      else 
      { 
       System.out.print(" "); 
      } 
     } 
    System.out.println(); 
    } 

Код работает отлично, оси прекрасно рисуются. Единственное, что мне нужно сделать, используя метод, который принимает два значения int (i и j) и возвращает строку (символ, который нужно нарисовать), и это то, что я не знаю, как это сделать. Любая помощь будет оценена по достоинству.

+0

Вы хотите, чтобы значение String возвращалось методом –

+0

Я полагаю, что у вас есть опечатка в случае 'i == 0 & j == 0'; он должен быть '&&' вместо '&'. –

ответ

0
 int yMax = 5; 
     int yMin = -5; 
     int xMax = 5; 
     int xMin = -5; 
     String result = ""; // returns string (character to be drawn) 
     for (int j = yMax; j >= yMin; j--) { 
      for (int i = xMin; i <= xMax; i++) { 
       if (j == 5 && i == 0) { 
        result += "^"; 
       } else if (i == 5 && j == 0) { 
        result += ">"; 
       } else if (i == 0 & j == 0) { 
        result += "."; 
       } else if (j == 0) { 
        result += "-"; 
       } else if (i == 0) { 
        result += "|"; 
       } else { 
        result += " "; 
       } 
      } 
      result += "\n"; 
     } 
+0

ОП попросил _ «метод, который принимает два значения int (i и j) и возвращает строку (символ, который нужно нарисовать)» _. Это не делает ничего подобного. Возвращаемое значение не будет символом, а скорее «строковым» представлением осей во всей их полноте. –

0

Просто захватить вашу логику в методе и заменить System.out.println() звонки с return заявления. Так как return оператор прекращает выполнение метода, вы можете отбросить else ветви:

public String getCharacter(int i, int j) { 
    if(j==5 && i==0) return "^"; 
    if(i==5 && j==0) return ">"; 
    if(i==0 && j==0) return "."; 
    if(j==0) return "-"; 
    if(i==0) return "|"; 
    return " "; 
} 

Ваша основная программа будет затем:

int yMax = 5; 
int yMin = -5; 
int xMax = 5; 
int xMin = -5; 


for(int j=yMax; j>=yMin; j--) 
{ 
    for(int i=xMin; i<=xMax; i++) 
    { 
     System.out.print(getCharacter(i, j)); 
    } 
    System.out.println(); 
} 

Вышесказанное также может быть сделано в виде вложенного тройном оператора:

public String getCharacter(int i, int j) { 
    return j==5 && i==0 ? "^" 
     : i==5 && j==0 ? ">" 
     : i==0 && j==0 ? "." 
     : j==0   ? "-" 
     : i==0   ? "|" 
     :    " "; 
} 

к сожалению, большинство Java форматтеры не сохранит, что хороший макет и сделает в заявлении непонятной беспорядок.

+0

Хорошо, это имеет смысл, но дело в том, что я не уверен, как назвать это в основном. –

+0

@ EmmanuelAmzallag - я обновил свой ответ, чтобы показать это –

Смежные вопросы