簡體   English   中英

你如何讓用戶設置變量?

[英]How do you have the user set the variable?

我試圖讓用戶為他們設置的數字設置名稱。 例如,如果他們設置為 3,則程序會詢問名稱 3 次,然后將這些名稱設置為數組內的不同變量。

 public static void main(String[] args) {
    Scanner Num = new Scanner(System.in);
    Scanner Name = new Scanner(System.in);
    
    
    System.out.println("How many names do you want to enter: ");
    int number = Num.nextInt();
    int[] numbs = new int[number];
    
    for (int i = 0; i < numbs.length; i++) {
        
        System.out.println("What is your name");
        
        String [] nameArray = Name.nextLine();

只是對泰坦的答案的一個小改進。

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("How many names do you want to enter: ");
    int numberOfTimes = sc.nextInt();
    String[] names = new String[numberOfTimes];
    sc.nextLine();
    for (int i = 0; i < numberOfTimes; i++) {
      System.out.println("What is your name");
      names[i] = sc.nextLine();
    }
    System.out.println(Arrays.toString(names));
  }

初始點

以下是您發布的代碼中發生的幾件事:

  • 您有兩個不同的掃描儀,每個都從 System.in 讀取
  • 提示用戶輸入( int number = Num.nextInt() )后,您正在使用該數字創建大小為“數字”的數組
  • 當您調用nextLine()時,您將結果分配給一個字符串數組( String [] )。

工作解決方案

這是一個解決這些問題的變體,也有一些補充:

  • 使用一個Scanner ,並給它一個通用名稱(“scanner”,而不是“Num”),因為掃描儀與一種特定的數據類型無關。 任何掃描器都可以讀取字符串、整數、布爾值、字節等。在 Javadoc 中查找支持的完整數據類型集。
  • 在嘗試創建數組之前檢查用戶輸入是否有效——如果用戶輸入“-1”,這是一個有效的 integer 值,但對於分配數組無效—— new int[-1] )將在運行。
  • 使用“next()”而不是“nextLine()”——對於您的示例中的 rest,使用“nextLine()”會導致在沒有用戶直接交互的情況下跳過一行(因此第一個“名稱”始終是一個空字符串)
  • 將“next()”的結果分配給字符串(不是String[] ),匹配方法的返回類型
  • 使用“System.out.print()”而不是“println()”,一個更整潔的程序 output
  • 使用小寫名稱以遵循 Java 命名約定(“掃描儀”,而不是“掃描儀”)
Scanner scanner = new Scanner(System.in);

System.out.print("How many names do you want to enter: ");
int times = scanner.nextInt();

if (times < 0) {
    System.out.println("negative numbers not allowed");
} else {
    String[] names = new String[times];
    for (int i = 0; i < times; i++) {
        System.out.print("What is your name: ");
        names[i] = scanner.next();
    }
    System.out.println(Arrays.toString(names));
}

這是一個示例運行:

How many names do you want to enter: 3
What is your name: one
What is your name: two
What is your name: three
[one, two, three]

在循環外創建一個數字長度的字符串數組,並使用名稱作為輸入初始化每個索引。
順便說一句,您只需要為輸入創建一個掃描儀object(不需要為不同的輸入創建各種對象)。
編輯- 沒有使用 numbs 數組。

Scanner sc=new Scanner(System.in);
System.out.println("How many names do you want to enter: ");
int number = sc.nextInt();
String []nameArray=new String[number];
/*Since nextInt() does not read the newline character in your input  
created by hitting "Enter"*/.
sc.nextLine();  
for (int i = 0; i < number; i++) {   
    System.out.println("What is your name");  
    nameArray[i]=sc.nextLine();
}
sc.close();  //To prevent memory leak

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM