2014-08-28 44 views
-1

我是新来的Java和正在解决一些问题。我被困在一个问题上,让我“编写一个程序来输入十个单词,然后按字母顺序显示第一个和最后一个单词”。这个问题不明确。这可能意味着将所有输入单词按字母顺序排列,并显示其中的第一个和最后一个(较难)或按字母顺序显示第一个和最后一个输入单词(更简单)。我写了下面的代码:使用compareTo();方法似乎并没有工作

import java.util.Scanner; 

public class Alphabetical { 

public static void main(String[] args) { 

    String[] s = new String[10]; 
    for (int i = 0; i < 10; i++) { 
     System.out.println("Enter word"); 
     Scanner ins = new Scanner(System.in); 

     s[i] = ins.nextLine().toLowerCase(); 
    } 

    int result = s[0].compareTo(s[10]); 

    if (result < 0) { 
     System.out.println(s[0]); 
     System.out.println(s[10]); 
    } 
    else if(result>0){ 
     System.out.println(s[10]); 
     System.out.println(s[0]); 
    } 
    else{ 
     System.out.println("Words are identical so cannot be placed in alphabetical order"); 
     } 
    } 

} 

但我发现了一个出界异常,其中compareTo方法被放置,我不知道为什么。如果有人能帮上忙,那会很棒。如果任何人都可以帮助更难的问题,那会更好。

+0

您可能应该在发布此问题之前在线搜索了例外情况。 – DonyorM 2014-08-28 07:58:19

回答

2

new String[10]创建10个元素的数组。

s[10]是数组的第11个元素,因为元素从0开始。因此,您必须将s[9]作为最后一个元素。 compareTo不是你的问题

1

因为你的“s”数组有10个元素。你改变你的代码

import java.util.Scanner;

公共类的字母顺序{

公共静态无效的主要(字串[] args){

String[] s = new String[10]; 
for (int i = 0; i < 10; i++) { 
    System.out.println("Enter word"); 
    Scanner ins = new Scanner(System.in); 

    s[i] = ins.nextLine().toLowerCase(); 
} 

int result = s[0].compareTo(s[9]); 

if (result < 0) { 
    System.out.println(s[0]); 
    System.out.println(s[9]); 
} 
else if(result>0){ 
    System.out.println(s[9]); 
    System.out.println(s[0]); 
} 
else{ 
    System.out.println("Words are identical so cannot be placed in alphabetical order"); 
    } 
} 

}

0

你得到有关阵列错误的原因是因为数组开始索引为0并且比数组的大小小1。因此,对于大小为10的数组,最高索引是9.您是否在发布此问题之前尝试在网上搜索异常?

问题意味着什么,你必须向谁给你的任务/问题的人澄清。