如何循环这个if语句?

时间:2015-04-14 19:27:04

标签: java loops for-loop while-loop linked-list

基本上我正在寻找我的问题。我的ABook课程如下:

import java.io.*;
import java.util.*;

public class ABook
{
   public static void main (String args[])
   {
       LinkedList addressBook = new LinkedList();
       Scanner input = new Scanner(System.in);
       System.out.println("Would you like to add a friend? (Say Y or N)"); 
       String reply = input.nextLine();
       if(reply.equals("Y"))
       {
           System.out.println("What is the name of your friend?");
           String name = input.nextLine();
           System.out.println("What is the age of your friend?");
           int age = input.nextInt();
           Friend newFriend = new Friend(name,age);
           addressBook.add("Name: " + newFriend.name + "; " + "Age: " + newFriend.age);
           System.out.println("This is your Address Book so far: " + addressBook);
       }     
       else if(reply.equals("N")){
           System.out.println("Thank you for your time");
       }
    }
}

如果你需要我在这里使用的Friend课,那就是它:

public class Friend
{
    public String name;
    public int age;
    public Friend(String n, int a)
    {   
        name = n;
        age = a;
    }
}

我不确定我是否使用“do”或“while”循环或如何使用它。如果你解释为什么或如何循环对另一个循环起作用,那将是很棒的。

谢谢。

编辑: 在我发布这个问题之前,我没有意识到这个社区的活跃程度如何,我认为我得到的答案并不像我在这么短的时间。所以,在我通过使用看起来像这样的do-while循环看到你的回复之前,我想出了我自己的方法来循环它。

import java.io.*;
import java.util.*;

public class ABook {
  public static void main(String args[]) {
    LinkedList addressBook = new LinkedList();
    Scanner input = new Scanner(System.in);
    int n = 0;
    do {
      System.out.println("Would you like to add a friend? (Say Y or N)");
      String reply = input.nextLine();
      if (reply.equals("Y")) {
        System.out.println("What is the name of your friend?");
        String name = input.nextLine();
        System.out.println("What is the age of your friend?");
        int age = input.nextInt();
        Friend newFriend = new Friend(name, age);
        addressBook.add("Name: " + newFriend.name + "; " + "Age: " + newFriend.age);

        System.out.println("This is your Address Book so far: " + addressBook);
        n++;
      } else if (reply.equals("N")) {
        System.out.println("Thank you for your time");
        System.out.println("Would you like to know who is in your Address Book? (Say Y or N)");
        String userinput = input.nextLine();
        if (reply.equals("Y")) {
          System.out.println("This is your Address Book so far: " + addressBook);
          System.out.println("Goodbye!");
        } else if (reply.equals("N")) {
          System.out.println("Okay! Goodbye!");
        }
        n = 101;
      }
    } while (n < 100);
  }
}

它运作良好,我甚至还要在其中使用另一个if - else语句。 我现在要做的是按照“朋友”的整数/年龄对链表进行排序,因此当我打印链表时,它可以按照从最小到最旧的顺序排序。如果有人能指出我正确的方向,那就太棒了!

无论如何,感谢所有前来帮助我的人,我希望这可以帮助其他人找到答案。

3 个答案:

答案 0 :(得分:3)

如果要执行任务至少一次,请使用do-while循环,无论条件是真还是假。 do-while循环的结构是 -

do{
   //do something
}while(condition);    

否则使用while循环 - 如果条件为true则执行循环。 while循环的结构是 -

while(condition){
   //do something
}

答案 1 :(得分:2)

如前所述,a&#34; do while&#34; &#34;而&#34;而&#34;循环是一个do-while循环在循环的底部执行条件,这反过来意味着将至少执行一次代码。

如果您想了解更多信息,this是一个不错的选择。

就您的代码而言。你应该使用&#34;而#34;循环,使用布尔值作为用户是否要继续添加的标志。您的代码最终会看起来像这样:


&#13;
&#13;
import java.io.*;
import java.io.BufferedReader;
import java.util.*;

public class ABook{
public static void main (String args[])
{
	try
	{
		LinkedList addressBook = new LinkedList();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in) );
		System.out.println("Would you like to add a friend? (Say Y or N)"); 
		String reply = br.readLine();
		boolean addMore = true;
		if(reply.equals("Y")){
			addMore = true;
		}else if(reply.equals("N")){
			addMore = false;
		}
		while(addMore)
		{
			System.out.println("What is the name of your friend?");
			String name = br.readLine();
			System.out.println("What is the age of your friend?");
			int age = Integer.parseInt(br.readLine());
			Friend newFriend = new Friend(name,age);
			addressBook.add("Name: " + newFriend.name + "; " + "Age: " +  newFriend.age);
			System.out.println("This is your Address Book so far: " + addressBook);
			System.out.println("Would you like to add a friend? (Say Y or N)"); 
			reply = br.readLine();
			if(reply.equals("Y")){
				addMore = true;
			}else if(reply.equals("N")){
				System.out.println("Thank you for your time");
				addMore = false;
			}
		}
		System.out.println("Thank you for your time");
	}catch (IOException e) {
		System.out.println(e.getMessage());
	}
}
}
 
&#13;
&#13;
&#13;

那应该解决并回答你的问题。请注意&#34;扫描仪&#34;函数不允许暂停输入,因此它不适用于你需要它。

一切顺利。

请告诉我结果:)

祝你好运!

答案 2 :(得分:1)

使用while循环似乎是最好的选择,尽管你也可以使用do-while。但是如果你使用do-while它会至少运行一次循环块,即使回复变量的第一个输入是&#34; Y&#34;。

String reply = input.nextLine();
   while(reply.equals("Y"))
   {
    System.out.println("What is the name of your friend?");
    String name = input.nextLine();
    System.out.println("What is the age of your friend?");
    int age = input.nextInt();
    Friend newFriend = new Friend(name,age);
    addressBook.add("Name: " + newFriend.name + "; " + "Age: " + newFriend.age);
    System.out.println("This is your Address Book so far: " + addressBook);
    System.out.println("Would you like to add a friend? (Say Y or N)"); 
    String reply = input.nextLine();
   }     

说明:如果回复变量的第一个输入是&#34; Y&#34;控件将进入while循环。在再次检查条件之前,最后一行再次提示输入。循环中的代码将执行与&#34; Y&#34;相同的次数。为回复变量输入。