【问题标题】:scanner + loop single line扫描仪+循环单行
【发布时间】:2017-01-10 19:35:51
【问题描述】:

让用户输入一个数字,然后你可以在屏幕上打印出许多*的数字,没有空格或换行符。您也可以在编号 5、6 和 9 中使用您的 Scanner 对象。

输入:

7

输出:

*******

我可以做到这一点,但我不能在所有星号的一行中做到这一点

import java.util.Scanner;

class  {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int x;
        int i;

        System.out.println("Enter a number:");
        x = scan.nextInt();

        for (i = 0; i < x; i++) {
            System.out.println("*");
        }

    }
}

【问题讨论】:

  • 如果这是你刚刚复制和粘贴的作业,学校应该付钱让你去做,因为那个语法太糟糕了!!!
  • “您也可以在数字 5、6 和 9 中使用您的 Scanner 对象!!”是什么意思?你的问题是“如何在一行中做到这一点?”?
  • “我可以做到这一点,但我不能在一行所有的星号中做到这一点”——你认为你为什么要这样做?

标签: java loops java.util.scanner


【解决方案1】:

您可以使用 for 循环,例如将 println 更改为 print,以便在同一行打印 *

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Please enter a number:");
    int inputNumber = sc.nextInt();
    
    for(int i=0;i<inputNumber;i++) {
      System.out.print('*');
    }
  }
}

试试here!

注意i可以在for循环中初始化,不需要事先声明

【讨论】:

    【解决方案2】:

    这是我的第一个回复,希望能帮到你...

    试试

    System.out.print("*"); 
    

    如果你使用

    System.out.println("*");
    

    你的程序会跳行...

    【讨论】:

      【解决方案3】:

      要在一行中打印所有星号,请使用 print 而不是 println

      Scanner scan = new Scanner(System.in);
      int x;
      int i;
      
      System.out.println("Enter a number:");
      x = scan.nextInt();
      
      for (i = 0; i < x; i++) {
          System.out.print("*"); // <- note the difference here!
      }
      

      为什么?来看看docs

      print(String):

      打印一个字符串。如果参数为空,则打印字符串“null”。否则,字符串中的字符按照平台默认的字符编码转换成字节,这些字节完全按照write(int)方法的方式写入。

      println(String):

      打印一个字符串,然后终止该行。这个方法的行为就像它调用print(String) 然后println()

      所以println(String) 调用print(String) 然后println()println() 是做什么的?

      通过写入行分隔符字符串来终止当前行。行分隔符字符串由系统属性 line.separator 定义,不一定是单个换行符('\n')。

      现在您看到了不同之处! println(String) 在打印字符串后打印一个新行,而 print(String) 不打印!

      这是您的代码的清理版本:

      Scanner scan = new Scanner(System.in);
      System.out.println("Enter a number:");
      int x = scan.nextInt();
      
      for (int i = 0; i < x; i++) {
          System.out.print("*");
      }
      

      【讨论】:

        【解决方案4】:

        你应该使用

        System.out.print("*"); 
        

        而不是

        System.out.println("*");
        

        因为println 回线而print 不会。

        希望对你有帮助。

        注意

        你的班级需要在你做的问题中有一个名字:

        class  {
        

        这在java中是错误的,所以你需要像这样声明你的类:

        class  nameClass {
          //Your code
        }
        

        看看这里:

        Getting Started

        这里:

        Arrays

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-06
          • 2012-09-27
          • 2016-01-26
          • 1970-01-01
          • 2018-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多