2015-02-15 8 views
0
package javaapplication1; 

import javax.swing.JOptionPane; 

public class Room{ 

    public static void main(String[] args) { 
     dialog(); 
     System.out.println(sample); 
    } 

    public static String dialog() { 
     String sample = JOptionPane.showInputDialog(null, "Insert Value", "Enter amount ", JOptionPane.QUESTION_MESSAGE); 
     if (sample.isEmpty()) { 
      JOptionPane.showMessageDialog(null, "Error!", "No Value Detected", JOptionPane.ERROR_MESSAGE); 
      dialog(); 
     } 
     System.out.println(sample+" from the bottom line."); 
     return sample; 
    } 

Эй, ребята,Java доступ к другой переменной

, кажется, что я в настоящее время сталкивается проблема с Явы в данный момент с точки зрения вызова одной переменной от другой object. Следуя приведенному выше коду, это пример кода, который предоставляет пользователю ввод с использованием java swing. У меня есть 2 объекта, один из которых является основным и еще одним диалогом(), диалог объявил переменную с именем sample, что я хочу передать ее на главную, однако я не могу использовать эту переменную, поскольку она всегда выдает ошибку ,

Поблагодарили бы за совет!

+0

Диалог не является объектом. это функция. – Jens

+0

Спасибо, что указали это! Я все еще новичок в Java, и это своего рода первый язык программирования, поэтому я мог бы немного запутаться в определенных областях. – AdamW

ответ

1

Использование внутри основного метода в качестве String sample = dialog(); или целого класса

package javaapplication1; 

import javax.swing.JOptionPane; 

public class Room{ 

    public static void main(String[] args) { 
     String sample = dialog(); 
     System.out.println(sample); 
    } 

    public static String dialog() { 
     String sample = JOptionPane.showInputDialog(null, "Insert Value", "Enter amount ", JOptionPane.QUESTION_MESSAGE); 
     if (sample.isEmpty()) { 
      JOptionPane.showMessageDialog(null, "Error!", "No Value Detected", JOptionPane.ERROR_MESSAGE); 
      dialog(); 
     } 
     System.out.println(sample+" from the bottom line."); 
     return sample; 
    } 
+0

Спасибо за помощь! Это прекрасно работает, жаль, что поздний ответ занят празднованиями здесь. Ура! Это потрясающе! – AdamW

0

Если метод возвращает значение, вы можете захватить его, когда вы вызываете метод, как это:

public static void main(String[] args) { 
    // Assign the return value of dialog() to a variable 
    String sample = dialog(); 
    System.out.println(sample); 
} 
0

Просто:

String sample = dialog(); 
System.out.println(sample); 

Вы должны присвоить возвращаемое значение переменной.

+0

А, я не знал, как это будет на самом деле, я пробовал использовать образец возврата; но не помещал String sample = dialog(); это имеет смысл сейчас. Большое спасибо! – AdamW

0

Использование,

System.out.println(dialog()); 

Вы возвращаете строку из вашего method.So вы можете сразу напечатать значение с помощью System.out.println

Если вы хотите использовать значение позже в своей программе, вы можете сохранить его в переменной.

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

Другой логическая ошибка вы делаете,

if (sample.isEmpty()) { 
     JOptionPane.showMessageDialog(null, "Error!", "No Value Detected", JOptionPane.ERROR_MESSAGE); 
     dialog(); 
} 

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

if (sample.isEmpty()) { 
     JOptionPane.showMessageDialog(null, "Error!", "No Value Detected", JOptionPane.ERROR_MESSAGE); 
     sample = dialog(); 
} 
+0

Вижу, спасибо за разъяснение! это большой подробный ответ на мое недоразумение. Однако в этом случае я пробовал это, если ответ пуст и опустел несколько раз, а затем поместив строку, он выйдет в 4 строках тогда (в зависимости от того, сколько раз я даю ему пустое значение). Как я смогу это исправить? (Извините за то, что вы перешли к исходному вопросу) – AdamW

+0

Простите, я не понял, что вы сказали. Можете ли вы предоставить фрагмент кода? –

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