当我想要一个字符串时,输出结果为整数

时间:2017-10-05 15:34:07

标签: java sorting if-statement

import java.util.Scanner;

public class QuestionTwo{

    public static void main(String[] args) {
        Integer number;
        Character first, middle, last;
        Scanner keyboard = new Scanner(System.in);
        System.out.print("First name: ");
        first = keyboard.next().charAt(0);
        System.out.print("Middle name: ");
        middle = keyboard.next().charAt(0);
        System.out.print("Last name: ");
        last = keyboard.next().charAt(0);
        System.out.print("Which type of sort order would you like (1 for ascending and 2 for descending)? ");
        number = keyboard.nextInt();

        if (number == 1) {

            System.out.println("Sort order: 1");

            if ((first) < (middle) && (first) < (last)) {

                if ((middle) < (last)) {

                    System.out.println(first + middle + last);
                }

                if ((last) < (middle)) {
                    System.out.println(first + last + middle);
                }
            }

            if ((middle) < (first) && (middle) < (last)) {

                if ((first) < (last)) {
                    System.out.println(middle + first + last);
                }
                if ((last) < (first)) {

                    System.out.println(middle + last + first);
                }
            }

            if ((last) < (middle) && (last) < (first)) {

                if ((middle) < (first)) {
                    System.out.println(last + middle + first);
                }
                if ((first) < (middle)) {
                    System.out.println(last + first + middle);
                }
            }
        }

        if (number == 2) {
            System.out.println("Sort order: 2");
            if ((first) > (middle) && (first) > (last)) {
                if ((middle) > (last)) {
                    System.out.println(first + middle + last);
                }

                if ((last) > (middle)) {
                    System.out.println(first + last + middle);
                }
            }

            if ((middle) > (first) && (middle) > (last)) {
                if ((first) > (last)) {
                    System.out.println(middle + first + last);
                }

                if ((last) > (first)) {
                    System.out.println(middle + last + first);
                }
            }

            if ((last) > (middle) && (last) > (first)) {
                if ((middle) > (first)) {
                    System.out.println(last + middle + first);
                }

                if ((first) > (middle)) {
                    System.out.println(last + first + middle);
                }
            }
        }
    }
}

我从中得到的输出是一个大的整数值,而程序应该做的是询问名字,然后是中间名,然后是姓。然后它应该询问哪个排序顺序,1是升序,2是降序。这意味着,一旦获得名称,它会查看名称并计算每个名称的字母数。然后,它会将答案作为按用户选择的顺序排序的名称。

例如:

如果我告诉它我的名字是David H. Anderson,然后点击1升序,我的结果应该是&#34; H. David Anderson&#34;,H。是2个符号,David是5,Anderson是8。

它目前所做的就是以上所有内容,除了给我一个我想要的格式的最后一行(我最终得到一个数字)。

3 个答案:

答案 0 :(得分:0)

我会改变一些事情让你开始。

首先,您的输入应该是String

其次,删除.charAt(0)

然后在打印之前比较String长度。

答案 1 :(得分:0)

试试这个:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main2 {

    private static ArrayList<String> splitAndSortFullName(String fullName, int sortOrder) {
        String[] names = fullName.split(" "); //Split names by space character.

        //Create a list with only non-empty names:
        ArrayList<String> namesList = new ArrayList();
        for (int i=0; i<names.length; ++i)
            if (!names[i].isEmpty())
                namesList.add(names[i]);

        switch (sortOrder) {
            case 1: Collections.sort(namesList); break;
            case 2: Collections.sort(namesList, (a, b) -> { return b.compareTo(a); }); break;
        }

        return namesList;
    }

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.print("Enter full name: ");

        String fullName = keyboard.nextLine(); //Read the full name. For example "John D. Doe".

        System.out.print("Which type of sort order would you like (1 for ascending and 2 for descending)? ");

        int number = keyboard.nextInt();

        System.out.println(splitAndSortFullName(fullName, number));

        //For use with many full names, just re-call the method splitAndSortFullName(...). For examples:
        System.out.println("Full examples:");
        System.out.println(splitAndSortFullName("John D. Doe", 1));
        System.out.println(splitAndSortFullName("Alice K. Example", 2));
        System.out.println(splitAndSortFullName("Martin T. Anderson", 1));
    }
}

在此代码中,用户完全输入其完整名称。

答案 2 :(得分:0)

import java.util.Scanner;

public class QuestionTwo

{

  public static void main(String[] args)
  {
    Integer number;

    String first, middle, last;

    Scanner keyboard = new Scanner (System.in);

    System.out.print("First name: ");

    first = keyboard.next();

    System.out.print("Middle name: ");

    middle = keyboard.next();

    System.out.print("Last name: ");

    last = keyboard.next();

    System.out.print("Which type of sort order would you like (1 for ascending and 2 for descending)? ");

    number = keyboard.nextInt();

    int firstLength = first.length();
    int middleLength = middle.length();
    int lastLength = last.length();

    if(number == 1)
    {
      System.out.println("Sort order: 1");

  if(firstLength < middleLength && firstLength < lastLength)
  {

    if(middleLength < lastLength)
    {

      System.out.println (first + " " + middle + " " + last);
    }

    if(lastLength < middleLength)
    {

      System.out.println (first + " " + last + " " + middle);
   }
  }

  if(middleLength < firstLength && middleLength < lastLength)
  {

    if(firstLength < lastLength)
    {

      System.out.println (middle + " " + first + " " + last);
    }

    if(lastLength < firstLength)
    {

      System.out.println (middle + " " + last + " " + first);
    }
  }

  if(lastLength < middleLength && lastLength < firstLength)
  {

    if(middleLength < firstLength)
    {

      System.out.println(last + " " + middle + " " + first);
    }

    if(firstLength < middleLength)
   {

     System.out.println(last + " " + first + " " + middle);
    }
  }
}

if(number == 2)
{

  System.out.println("Sort order: 2");

   if(firstLength > middleLength && firstLength > lastLength)
  {

    if(middleLength > lastLength)
    {

      System.out.println (first + " " + middle + " " + last);
    }

    if(lastLength > middleLength)
    {

      System.out.println (first + " " + last + " " + middle);
    }
  }

  if(middleLength > firstLength && middleLength > lastLength)
  {

    if(firstLength > lastLength)
    {

     System.out.println (middle + " " + first + " " + last);
    }

    if(lastLength > firstLength)
    {

      System.out.println (middle + " " + last + " " + first);
    }
  }

  if(lastLength > middleLength && lastLength > firstLength)
 {

    if(middleLength > firstLength)
    {

      System.out.println(last + " " + middle + " " + first);
    }

    if(firstLength > middleLength)
    {

      System.out.println(last + " " + first + " " + middle);
    }
  }
}
}
}

听了评论并在thanopi57的帮助下,我得到了正确的答案。我做的第一件事是删除&#34; .AtChar(0)&#34;并将变量定义为字符串,而不是字符。然后我将变量定义为变量长度,变量xxxx变为int xxxxLength = xxxx.Length();,对所有三个变量(将它们从String转换为Int)执行此操作。然后我用我新定义的变量替换了后续的连接操作数,我还添加了#34; &#34;对于println行中操作数之间的空格。