2014-10-24 4 views
-3

Напишите программу, которая продолжает считывать строки, пока не прочитает строку «xyz». Если ваше первое имя составляет среди введенных строк, программа печатает «Мое имя есть». В противном случае он печатает «My имя отсутствует в списке. Пожалуйста, добавьте его.»Использование циклов while и условий

import java.util.*; 
public class problem1 { 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     String name,name2="xyz"; 
     Scanner input=new Scanner(System.in); 
     name=input.next(); 
     while(name!="xyz") 
      name=input.next(); 
    } 
    { 
     if (name.equals("rania")) 
      System.out.println("my name is there"); 
     else 
      System.out.println("please enter your name"); 
    } 
} 
+1

ОК ... В чем вопрос? –

+0

Не публикуйте требование дословно, отправьте вопрос, который у вас есть о выполнении требования. В чем проблема с кодом, который у вас есть? См. Http://stackoverflow.com/help/how-to-ask –

+2

Если вы склонны писать отступы, вы можете легко обнаружить эти проблемы. –

ответ

0

На самом деле, если бы вы проверили свой фрагмент кода (который был довольно близко), вы бы получили его в течение нескольких итераций.

Вот полностью протестирован фрагмент код, который работает в соответствии с постановкой задачи:

public static void main(String[] args) 
    { 
     // TODO Auto-generated method stub 
     String name = "rania"; 
     String endString = "xyz"; 
     Scanner input= new Scanner(System.in); 

     String aString =input.next(); 

     // Assume name will not be found6 
     Boolean isNameFound = false; 

     while(!aString.equals(endString)) 
     { 
      if (aString.equals(name)) 
      { 
       isNameFound = true; 
       // This is to ensure program does not quit when the name is found 
       // break; 
      } 

      aString = input.next(); 
     } 


     if(isNameFound) 
     { 
      System.out.println("My name FOUND"); 
     } 
     else 
     { 
      System.out.println("My name NOT FOUND"); 
     } 
    } 

Вот выход для случая 1: ни один из строки введенной не соответствует желаемому имени до конца строка «хуг» была введена

sjhsa 
sdkhfds 
khds;kuf 
xyz 
My name NOT FOUND 

Здесь вывод для случая 2: одна из введенных строк соответствует желаемому имени, и программа завершена.

afkhds 
kjfdsgaks 
fdgkjfd 
gvkjfd 
rania 
My name FOUND 
+0

спасибо, но программа должна выйти только при печати xyz, а не рании, поэтому, если мы напечатаем rania, цикл while должен продолжать работать до печати xyz, а затем, наконец, напечатать мое имя. Но я думаю, что это невозможно .... спасибо u –

+0

@sarachatila Ничего невозможного в программировании. Посмотрите на отредактированный ответ. Наслаждайтесь кодированием! – Chiseled

+0

очень благодарен –

1

Ваша проблема заключается в понимании того, как блок кода работает. Это означает, что вы открываете блок кода, используя {, и закройте его, используя }. Таким образом, весь код, заключенный в { ... }, будет блоком, и этот блок будет принадлежать телу для оператора. Вы можете легко обнаружить проблемы, связанные с блоком кода, если вы правильно введите код. Вы можете найти дополнительную информацию об отступлении here.

Также у вас возникли проблемы при сравнении String s. Вы должны использовать метод equals. Там это глубокое объяснение здесь: How do I compare strings in Java?

Это как ваш код должен выглядеть следующим образом:

while(!name.equals("xyz")) { 
    if (name.equals("rania")) { 
     System.out.println("my name is there"); 
    } else { 
     System.out.println("please enter your name"); 
    } 
    name=input.next(); 
} 

Примечания: Этот код не призвано решить текст, указанный в вашем домашней работе. Это всего лишь руководство для того, чтобы ваш код мог компилироваться и запускаться без проблем. Как решить вашу точную домашнюю работу ... это ваша работа, а не от нас.

+0

um ... почему бы просто не использовать while (! Name.equals («rania»)) и вырезать весь странный код xyz? Кроме того, ваше сообщение «мое имя есть» никогда не будет печататься с вашим текущим кодом, так как цикл while будет завершен на линии перед ним. – user1274820

+0

@ user1274820 Я помню, и * нарушивший * код работал как и ожидалось (и, как объяснено в моем удаленном комментарии). Но все же, если вы хотите быть уверенным, просто скопируйте/вставьте его в любую IDE, которая у вас есть, и она работает так, как ожидалось. Обратите внимание, что я удалил! из условия 'while'. Вы можете проверить * оскорбительный * код в истории сообщения. –

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