Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符(0)不返回第一个数字,而是返回第二个数字_Java - Fatal编程技术网

Java 字符(0)不返回第一个数字,而是返回第二个数字

Java 字符(0)不返回第一个数字,而是返回第二个数字,java,Java,拉丁语翻译。最后,我试图找出第一个元音的位置。索引设置为每个元音的位置,但对于pig latin,您只需要第一个元音的位置。当我运行这个程序时,我并不总是得到第一个元音的位置。它似乎给了我第二个号码,而不是第一个 import java.util.Scanner; import javax.swing.JOptionPane; public class Assignment_4_Piglatin { public static void main(String[] args) {

拉丁语翻译。最后,我试图找出第一个元音的位置。索引设置为每个元音的位置,但对于pig latin,您只需要第一个元音的位置。当我运行这个程序时,我并不总是得到第一个元音的位置。它似乎给了我第二个号码,而不是第一个

import java.util.Scanner;
import javax.swing.JOptionPane;

public class Assignment_4_Piglatin {

    public static void main(String[] args) {

        Scanner userWord = new Scanner(System.in);

        System.out.println("K. Caleb Swallow");
        System.out.println("Welcome to the Pig Latin Translator!");

        boolean run = true;
        while (run) {

            System.out.println("Please enter a word(or press Q to quit):");

            String firstLetter = "something";
            String firstVowel = "test";

            String word = userWord.next();
            String vowels = "aeiou";
            if (word.equals("Q")) {
                System.exit(0);
            }

            firstLetter = Character.toString(word.charAt(0));

            if (firstLetter.equals("a") || firstLetter.equals("e") || firstLetter.equals("i") || firstLetter.equals("o") || firstLetter.equals("u")) {
                System.out.println(word + "way");
            } else {
                for (int index = 0; index < word.length(); index++) {
                    if (vowels.contains(String.valueOf(word.charAt(index)))) {
                        System.out.print(index);
                        String firstNumber = Integer.toString(index);
                        firstVowel = Character.toString(firstNumber.charAt(0));

                    }
                }

            }
            System.out.println(firstVowel);
import java.util.Scanner;
导入javax.swing.JOptionPane;
公共课堂作业\u 4\u{
公共静态void main(字符串[]args){
Scanner userWord=新扫描仪(System.in);
System.out.println(“K.Caleb Swallow”);
System.out.println(“欢迎使用Pig拉丁翻译工具!”);
布尔运行=真;
while(运行){
System.out.println(“请输入一个单词(或按Q键退出):”;
String firstLetter=“某物”;
String firstvotel=“test”;
String word=userWord.next();
字符串元音=“aeiou”;
if(字等于(“Q”)){
系统出口(0);
}
firstLetter=Character.toString(word.charAt(0));
if(firstLetter.equals(“a”)|| firstLetter.equals(“e”)| firstLetter.equals(“i”)| firstLetter.equals(“o”)| firstLetter.equals(“u”)){
System.out.println(word+“方式”);
}否则{
for(int index=0;index
该示例在
if..else
条件下似乎有一些冗余代码。如果要打印第一个元音,则可以使用简单的
for
循环,例如:

String word = userWord.next().toLowerCase();
String vowels = "aeiou";
for(int i=0 ; i<word.length() ; i++){
    if(vowels.contains(String.valueOf(word.charAt(i)))){
        System.out.println(word.charAt(i));
        break;
    }
}
String word=userWord.next().toLowerCase();
字符串元音=“aeiou”;

对于(inti=0;i
publicstaticvoidmain(String[]args){

Scanner userWord=新扫描仪(System.in);
System.out.println(“K.Caleb Swallow”);
System.out.println(“欢迎使用Pig拉丁翻译工具!”);
布尔运行=真;
while(运行){
System.out.println(“请输入一个单词(或按Q键退出):”;
String firstLetter=“某物”;
String firstvotel=“test”;
String word=userWord.next();
ArrayList元音=新的ArrayList();
元音。加上('a');
元音。加上('e');
元音。加上('i');
元音。加上('o');
元音。加上('u');
if(字等于(“Q”)){
系统出口(0);
}
firstLetter=Character.toString(word.charAt(0));
if(firstLetter.equals(“a”)|| firstLetter.equals(“e”)| firstLetter.equals(“i”)| firstLetter.equals(“o”)| firstLetter.equals(“u”)){
System.out.println(word+“方式”);
}否则{
for(int index=0;index

这就是我要做的。我将元音字符串更改为ArrayList,这样您就可以轻松地检查带有索引的字符串单词中的字符是否是元音,代码运行得绝对正常。它会返回索引,第一个元音在哪里,是什么元音。

我可以马上看到一些问题,但可能是因为ng此错误出现在以下行中:

String firstNumber = Integer.toString(index);
firstVowel = Character.toString(firstNumber.charAt(0));
想想这是怎么回事。首先,你用索引值做一个
字符串
,然后你说第一个元音在该字符串的第0个索引处

想想这个例子:你好

程序将运行并将“4”分配给
firstNumber
first元音
,这不是您想要的

然而,如果您只有一个元音,您的程序将“工作”

如果你有超过十个元音,会发生什么?我知道这不是一个现实的例子,但假设它发生了。你的程序会将最后一个元音的索引分配给
firstNumber
(假设它是15),然后它会将该元音的第一个字符分配给
firstvowell
(1).这根本没有什么意义,是吗,尤其是如果你在索引1中没有元音的话

对于长度小于10个字母的单词,您遇到的主要问题是,您不仅输出了第二个数字,还输出了最后一个数字。我喜欢处理这一问题的一种方法是遍历代码,并在无法确定某个值的情况下输入print语句。例如,我会在其中输入另一个print语句你的循环告诉你你在看什么字母,就像这样:

System.out.println("LETTER: "+ String.valueOf(word.charAt(index)));
这将帮助您避免混淆。解决此问题的正确方法是使用
break
语句,如在Darshan的回答中。或者,您可以使用for循环的属性:

firstVowel = "";
for (int index = 0; index < word.length() && firstVowel == ""; index++) {
CODE
}
firstvotel=”“;
对于(int index=0;index
请注意,for
循环的
的第二部分是一个条件语句。您已经知道,这可以用于循环单词的字符,但您可以在其中插入任何逻辑语句。在本例中,我将
第一元音的默认值设置为firstVowel = "";
for (int index = 0; index < word.length() && firstVowel == ""; index++) {
CODE
}