当前位置: 首页 > 知识库问答 >
问题:

扫描仪作为参数并转换为int?(爪哇)

黄英韶
2023-03-14

我在使用扫描仪方面遇到了问题。getUserInput将scanner实例作为输入,并初始化来自scanner的指定大小的数组。例如:如果用户输入3,那么该方法将创建一个大小为3的数组。

然而,它一直说scnr不能转换为int......有什么建议吗?

 public static void main(String[] args) 
  {
  Scanner scnr = new Scanner(System.in);
  System.out.println("How many orders were placed Saturday?");
  int [] userInput = getUserInput(scnr);
  System.out.println("How many orders were placed Sunday?");
  int [] userInput = getUserInput(scnr);
  System.out.println("How many orders were placed Monday?");
  int [] userInput = getUserInput(scnr) 

  return;
 }
}


 public static int[] getUserInput(Scanner scnr)
 {
   int[] userInput = new int[scnr];

   return userInput;   
 }

共有3个答案

董畅
2023-03-14

首先,你在这里犯了两个错误

  1. int[]userInput此userInput变量有两个重复项
  2. 您正在将Scanner的一个实例作为参数传递给getUserInput函数

修复

所以为了创造,我们需要遵循一个语法,即

datatype [] vairable_name = new datatype[size]; 

这里的大小可以是byteshortint,但您所做的是

datatype [] vairable_name = new datatype[Scanner];

这不是语法。您可以通过从用户处获取int输入来修复它
一个扫描器作为一种方法。nextInt(),它将用户输入的数字转换为int<解决方法是

int[] userInput = new int[scnr.nextInt()];
// This is like the syntax 
datatype [] vairable_name = new datatype[Scanner];

重复变量

你应该修改java中的作用域,然后你就会知道为什么这是一个错误
同一作用域或子作用域中不能有相同的变量名

public static void main(String args[]){
   int a = 0;
   int a = 1; // <- error cuz a is already difined and is duplicate in the same scope.
}

同样地

public static void main(String args[]){
   int a = 0;
   if(true){
      int a = 1; // <- error cuz a is already difined and is duplicate in child scope.
   }
}

解决方案是更改变量名。

//scnr is now globally available in the class so need to pass it as a parameter 
Scanner scnr = new Scanner(System.in);
public static void main(String[] args) 
  {
  System.out.println("How many orders were placed Saturday?");
  int [] saturdayUserInput = getUserInput();
  System.out.println("How many orders were placed Sunday?");
  int [] sundayUserInput = getUserInput();
  System.out.println("How many orders were placed Monday?");
  int [] mondayUserInput = getUserInput() 

  return;
 }
}

 public static int[] getUserInput()
 {
   int[] userInput = new int[scnr.nextInt()];

   return userInput;   
 }
司空俊悟
2023-03-14

Java Scanner类的nextInt()方法用于将输入的下一个标记扫描为int

public static int[] getUserInput(Scanner scnr)
     {
       int[] userInput = new int[scnr.nextInt()];
    
       return userInput;   
     }
法池暝
2023-03-14

你必须在Scanner上调用一个方法。因为你想要一个int,所以这样做:

int[] userInput = new int[scnr.nextInt()];

在这里您可以找到API文档:https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html

 类似资料:
  • 我需要在一种方法中将文件名作为扫描仪的输入,并在所有其他方法中将该扫描仪用作其余代码的文件路径的引用。 我正在学习文件I/o,对于这个项目,我应该以文件名作为输入,计算文件中的行数,并将每行放入一个数组中。 我的问题出现在FileUtils期间。countRecords方法。在FileUtils中返回文件类型后。打开输入文件(openInputFile),然后将数据放入扫描仪(代码中的变量inf和

  • 我想通过scanner实例化另一个类的对象,但我需要传递的参数之一是LocalDate类型。这就是为什么我在主类中创建了一个方法,以便 要求用户按给定顺序输入字符串(例如dd.MMM.yyyy) 然后,我的程序接受输入并将其保存为字符串,以便稍后将其显示给用户 但我被一个错误困住了。下面是我的生日班和我主要班的相关部分。 生日.java: 主.java: 我一直得到的实例化错误是不兼容的类型:ja

  • 我有一个简单的Do-While循环,它使用的扫描器功能不正常。代码应该显示一个文本,提示用户输入字符串,用户输入字符串,然后程序再次显示相同的文本,并提示用户输入另一个字符串。 程序所做的是显示正确的消息,用户输入一个字符串,然后提示用户输入一个字符串,但用户输入之前没有文本。用户输入文本后,它就会正常工作。 查看我的代码,我看不出程序有任何理由在不向用户显示文本的情况下提示用户两次输入。

  • 问题内容: 因此,我是一名新Java程序员,我试图弄清楚为什么一段代码无法正常工作。我遇到的问题是:“字符串兴趣= input.nextLine();”,它跳过了用户的输入并跳至下一个System.out,因此它仅在控制台中显示“您的个人资料…”在允许用户输入任何数据之前。抱歉,这是一个愚蠢的问题,我很新! 问题答案: 这样说: 其余代码可能与您上面的代码相同。 编辑: 它必须是这样的(我的意思是

  • 因此,我是一个新的Java程序员,我正试图弄清楚为什么一段代码不能工作。我遇到的问题是“String interests=input.nextLine();”这一行,它跳过了用户的输入并跳转到下一个System.out,所以它只显示“Your Profile...”。在允许用户输入任何数据之前。抱歉,如果这是一个愚蠢的问题,我是很新的!

  • 我创建了一个程序,它使用Scanner向用户询问int值,直到他们插入-1,这使得程序停止接收数字。这样做后,它将添加用户输入的所有值。这是我到目前为止的代码: 我希望输出如下所示: 我想用一个字符串来给我输入的数字集,但它只给我最后输入的值。这是-1,因为这是停止程序必须输入的数字。 我怎样才能解决这个问题?