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。
它目前所做的就是以上所有内容,除了给我一个我想要的格式的最后一行(我最终得到一个数字)。
答案 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行中操作数之间的空格。