我有一个任务,我们必须制作一个Java程序,它将读取用户的4个输入:

  • 整型
  • 双倍
  • 性格
  • 细绳

然后,它在一行中以上述顺序输出它们,在另一行中以相反的顺序输出它们.

输入内容为

  • 整型: 99
  • 双倍: 3.77
  • 性格: z
  • 细绳: Howdy

但是,当它们被输出时,字符串就是空白的

预期结果:

Enter integer: 
Enter double: 
Enter character: 
Enter string: 
99 3.77 z Howdy
Howdy z 3.77 99
3.77 cast to an integer is 3

实际结果:

Enter integer: 
Enter double: 
Enter character: 
Enter string: 
99 3.77 z 
 z 3.77 99
3.77 cast to an integer is 3

这是我拥有的代码

import java.util.Scanner;

public class BasicInput {
   public static void main(细绳[] args) {
      Scanner scnr = new Scanner(System.in);
      int userInt = 0;
      double user双倍 = 0.0;
      
      // FIXME Define char and string variables similarly
      char myChar;
      细绳 my细绳 = "";
      
      System.out.println("Enter integer: ");
      userInt = scnr.nextInt();
      
      // FIXME (1): Finish reading other items into variables, then output the four values on a single line separated by a space
      System.out.println("Enter double: ");
      user双倍 = scnr.next双倍();
      
      System.out.println("Enter character: ");
      myChar = scnr.next().charAt(0);
      
      System.out.println("Enter string: ");
      my细绳 = scnr.nextLine();
      
      
      System.out.println(userInt + " " + user双倍 + " " + myChar + " " + my细绳);
   
      // FIXME (2): Output the four values in reverse
      System.out.println(my细绳 + " " + myChar + " " + user双倍 + " " + userInt);
      
      // FIXME (3): Cast the double to an integer, and output that integer
      System.out.println(user双倍 + " cast to an integer is " + (int)user双倍);
      
      return;
   }
}

如何使字符串显示在输出中?它只是显示为空字符串.我甚至try 将my细绳变量初始化为"Hello",但它仍然显示为空.

推荐答案

下面的方法应该是可行的.

您可以使用System.out.print来请求同一行上的输入,也可以使用String.format来输出变量.别忘了关闭Scanner号公路!

Note:当获取部分字符串输入时,在请求更多字符串值之前,需要调用scanner.nextLine()来转储缓冲区.

import java.util.Scanner;

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

        // Inputs
        int userInt;
        double userDouble;
        char myChar;
        String myString;

        System.out.print("Enter integer: ");
        userInt = scanner.nextInt();

        System.out.print("Enter double: ");
        userDouble = scanner.nextDouble();

        System.out.print("Enter character: ");
        myChar = scanner.next().charAt(0);

        scanner.nextLine(); // Clear the buffer

        System.out.print("Enter string: ");
        myString = scanner.nextLine();

        // 输出 the four values in order
        System.out.printf("%d %.2f %s %s%n", userInt, userDouble, myChar, myString);

        // 输出 the four values in reverse order
        System.out.printf("%s %s %.2f %d%n", myString, myChar, userDouble, userInt);

        // Cast the double to an integer, and output that integer
        System.out.println(userDouble + " cast to an integer is " + (int) userDouble);

        scanner.close();
    }
}

输出

Enter integer: 99
Enter double: 3.77
Enter character: z
Enter string: Howdy
99 3.77 z Howdy
Howdy z 3.77 99
3.77 cast to an integer is 3

如果要一次获取所有输入,可以执行以下操作:

import java.util.Scanner;

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

        // Inputs
        int userInt;
        double userDouble;
        char myChar;
        String myString;

        System.out.print("Enter an integer, double, character, and a string: ");

        userInt = scanner.nextInt();
        userDouble = scanner.nextDouble();
        myChar = scanner.next(".").charAt(0); // See: https://stackoverflow.com/a/13942707/1762224
        myString = scanner.nextLine().trim();

        // 输出 the four values in order
        System.out.printf("%d %.2f %s %s%n", userInt, userDouble, myChar, myString);

        // 输出 the four values in reverse order
        System.out.printf("%s %s %.2f %d%n", myString, myChar, userDouble, userInt);

        // Cast the double to an integer, and output that integer
        System.out.println(userDouble + " cast to an integer is " + (int) userDouble);

        scanner.close();
    }
}

输出

Enter an integer, double, character, and a string: 99 3.77 z Howdy
99 3.77 z Howdy
Howdy z 3.77 99
3.77 cast to an integer is 3

如果您想严格控制可以输入的字符,可以使用以下模式:

myChar = scanner.next("[A-Za-z]").charAt(0); // Only alpha

Java相关问答推荐

JPackage-results已安装-如何添加系统属性?

使用@MappdSuperClass扩展ParentClass&Won t继承ParentClass属性

对某一Hyroby控制器禁用@cacheable

FALSE:它应该在什么时候使用?

在Java中,如何按一个属性升序,然后按另一个属性降序对对象列表进行排序?

CompleteableFuture是否运行在不同的内核上?

在Java中,在单个逻辑行中连接列表和单个元素的正确方法是什么?

查找剩余的枚举

如何从错误通道回复网关,使其不会挂起

如何从JNI方法正确调用NSOpenPanel以在正确的线程上运行?

迁移到Java 17后,日期显示不准确

虚拟线程应该很快消亡吗?

在不使用instanceof或强制转换的情况下从父类变量调用子类方法

如何在字节数组中反转UTF-8编码?

在Java泛型中使用通配符时,如何推断类型

如何利用OpenTelemeter将初始值(零)输出到普罗米修斯

控制器建议异常处理

如何在JSP中从select中获取值并将其放入另一个select

如何在Java中正确实现填字游戏求解器

为什么child-pom会创建一个新版本