2015-01-09 4 views
0
public class FirstofTen 
{ 
public static void main(String[] args) throws IOException 
{ 
    int i = 10; 

    while (i >= -10) { 

     double x = i/10.0; 

     i--; 

     String X = String.format("%.2f", x); 

     System.out.println(X);   
    } 

    i = 10; 

    while(i >= -10) { 

     double x = i/10.0; 

     i--; 

     String X = String.format("%.2f", x); 

     double Y = Math.sqrt(Math.pow(1, 2) - Math.pow(x, 2)); 

     System.out.println(String.format("%.2f", Y));    
    } 

Это школьное задание, я не хочу ответа, просто помогите. В принципе, мне дано, что гипотенуза треугольника всегда 1. Я также знаю, что X должен находиться между -1 и 1, и он должен быть в десятом месте, если его двойной (, 0.6 и т. Д.). Итак, допустим, X - 0.9, тогда я должен позволить Java вычислить результат третьей стороны моего треугольника, используя теорему Пифагора. Я получил эту часть. Проблема, я полагаюсь на результат. Я получаю этот вывод:Почему не моя переменная печать?

1.00 
0.90 
0.80 
0.70 
0.60 
0.50 
0.40 
0.30 
0.20 
0.10 
0.00 
-0.10 
-0.20 
-0.30 
-0.40 
-0.50 
-0.60 
-0.70 
-0.80 
-0.90 
-1.00 
0.0 
0.44 
0.60 
0.71 
0.80 
0.87 
0.92 
0.95 
0.98 
0.99 
1.00 
0.99 
0.98 
0.95 
0.92 
0.87 
0.80 
0.71 
0.60 
0.44 
0.00 

Как вы можете видеть, он печатает X, а затем печатает Y прямо под ним. Как я могу разделить их на разные столбцы?

+1

Где вы печатаете 'Y'? – David

+2

Можете ли вы поделиться результатами, которые у вас есть, и результатами, которые вы пытаетесь получить? – Mureinik

+2

Вы заметили, что вторая строка печати не имеет аргументов? – MaVVamaldo

ответ

0
while (i >= -10){ 
    double x = i/10.0; 
    i--; 
    String X = String.format("%.2f", x); 
    System.out.println("X : " + X); 
    } 

Когда в то время как петля выходит значение для я является я = -1,0

Итак, Ваш следующий пока не будет выполняться как i> = -10 возвращает false

Решение:

int i=10; 
System.out.print("Values For X : "); 
while (i >= -10) { 
    // Code Goes Here for first while loop 
    System.out.print(" " + X) 
} 
i=10; // Just re-initialize i with previous value i.e., 10 
System.out.print("Values For Y : "); 
while(i>=-10) { 
    // Code Goes Here for second while loop 
    System.out.print(" " + Y); // and not System.out.println(); 
} 
+0

Большое спасибо! Я получил его, но теперь у меня есть все правильные значения X, а затем все правильные значения Y. Это один гигантский столбец чисел. Как я могу отделить столбцы, так что X находится с левой стороны, а Y - с правой стороны? (P.S. Обновленный код находится в моем исходном сообщении) – Kush

+0

@ Kush Обновление вышеуказанного кода в соответствии с вашими требованиями к форматированию –

+0

@Kush И если ваша проблема решена, то Примите ответ, чтобы он был доступен другим пользователям в качестве ответа. –

0

Вы должны указать, что вы хотите напечатать внутри System.out.println(); вместо: System.out.println(Y);

+0

Возможно, вы захотите уточнить, что вы пытаетесь сказать здесь. Ответ выглядит хорошо для меня, как опытный программист ... другие тоже могут не понимать. – rfornal

+0

Я понял это, спасибо! Это была просто глупая ошибка, когда я копировал код на форум. – Kush

0

Ваше второе время цикла не будут введены, поскольку i меньше, чем -10 после первого цикла, а. Вы должны сбросить его значение до второго цикла.

0

Есть несколько проблем с кодом:

Во-первых, вы кричите сбросить ваш i обратно десять в начале второго цикла; или используйте петлю for, это было бы чище. Таким образом, этот код

int i = 10; 
while (i >= -10) { 
    // work 
    i--; 
} 

становится этим:

for (int i = 10; i >=-10; i--) { 
    // work 
} 

Во-вторых, в вашем втором цикле, вы должны отформатировать Y и фактически распечатать его. Вы можете сделать форматирование и печать в одном перегибать:

System.out.println(String.format("%.2f", Y)); 
0

Initialize я = 10 снова в коде, прежде чем второй, а цикл будет работать

+0

Спасибо! Теперь Y печатает, но он печатает прямо под X в терминах вывода. Я обновил вопрос с дополнительной информацией, так как я могу переформатировать Y так, чтобы он находился в другой колонке? – Kush

+0

Вы можете распечатать его в той же строке с помощью 'System.out.println (X +" "+ String.format ("%. 2f ", Y)); –

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