Я пишу программу для генерации метаданных html на основе названия продукта. Вся программа запрашивает (на данный момент) название продукта и две другие детали. Это текущий некорректный вывод:if (string.contains) смешение размещения переменных в конечном выпуске
Please paste model title.
(МОЯ ВХОД: Bugatti Veyron 1:18 Синий)
<METANAME="DESCRIPTION"CONTENT="Shop for Bugatti diecast model cars at [WEBSITE REMOVED]">
<METANAME="ABSTRACT"CONTENT=Shop for diecast model cars at [WEBSITE REMOVED].
<METANAME="KEYWORDS"CONTENT=“diecast cars, diecast quality scale cars,
diecast model cars, model cars, collectible cars, Veyron diecast model, quality diecast cars, diecast 1:18">
Что я хочу:
Please paste model title.
(МОЯ ВХОД: Bugatti Veyron 1:18 Blue)
<METANAME="DESCRIPTION"CONTENT="Shop for Bugatti Veyron 1:18 Blue diecast model cars at [WEBSITE REMOVED]">
<METANAME="ABSTRACT"CONTENT=Shop for diecast model cars at [WEBSITE REMOVED].
<METANAME="KEYWORDS"CONTENT=“diecast cars, diecast 1:18 scale cars,
diecast model cars, model cars, collectible cars, diecast model, Bugatti diecast cars, diecast Veyron">
Обратите внимание, что отличия - это название не название, а одно слово из него. Шкала ставится в конце вместо того, где оно должно быть, и т.д.
Код, в усеченном моды, чтобы избежать размещения 300+ линий:
import java.util.Scanner;
public class MetagenV3 {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
String title;
String abstr = "Shop for diecast model cars at [WEBSITE REMOVED]";
String scale;
String diecastManu;
String metaModel;
String metaMake;
String defaultstring = "quality";
String[] metaMakesList = {"Abarth", "Acura", "Ahrens", "Alfa Romeo"
+"Alpine Renault", "AMC", "American LaFrance", "Aprilia", "Aston Martin"
+"Audi", "Austin", "Austin-Healey", "Bedford", "Benelli", "Bentley", "BMW"
+"Buffalo", "Bugatti", "Buick","Cadillac","Caterham", "Chaparrel"
+ "Checker","Chevrolet","Chrysler","Citroen", "Cleveland", "Cord","DAF"
+ "Daimler","Dakota","Datsun","Dauer"}; // ETC ETC
String[] scaleList = {"1:12","1:18","1:24","1:32","1:43","1:64"}; // ETC ETC
System.out.println("Please paste model title.");
title = sc.next();
if (title.toLowerCase().contains(metaMakesList[0].toLowerCase()))
{ metaMake = metaMakesList[0];}
if (title.toLowerCase().contains(metaMakesList[1].toLowerCase()))
{ metaMake = metaMakesList[1];}
if (title.toLowerCase().contains(metaMakesList[2].toLowerCase()))
{ metaMake = metaMakesList[2];}
if (title.toLowerCase().contains(metaMakesList[3].toLowerCase()))
{ metaMake = metaMakesList[3];}
if (title.toLowerCase().contains(metaMakesList[4].toLowerCase()))
{ metaMake = metaMakesList[4];}
if (title.toLowerCase().contains(metaMakesList[5].toLowerCase()))
{ metaMake = metaMakesList[5];}
// ETC, ETC
else {
metaMake = defaultstring;
}
if (title.toLowerCase().contains(scaleList[0].toLowerCase()))
{ scale = scaleList[0]; }
if (title.toLowerCase().contains(scaleList[1].toLowerCase()))
{ scale = scaleList[1]; }
if (title.toLowerCase().contains(scaleList[2].toLowerCase()))
{ scale = scaleList[2]; }
if (title.toLowerCase().contains(scaleList[3].toLowerCase()))
{ scale = scaleList[3]; }
// ETC, ETC
else { scale = defaultstring;}
System.out.println("Please paste model manufacturer.");
diecastManu = sc.next();
System.out.println("Please paste car model (e.g Skyline");
metaModel = sc.next();
String fullOutput = "<METANAME=" + "\"DESCRIPTION\"" + "CONTENT=\"" + "Shop for " + title + " "
+ "diecast model cars at [WEBSITE REMOVED]\"" +">" + "\n"
+ "<METANAME=" + "\"ABSTRACT\"" + "CONTENT=" + abstr + "\n"
+ "<METANAME=" + "\"KEYWORDS\"" + "CONTENT=" + "“diecast cars, diecast " + scale + " "
+ "scale cars," + "\n" + "diecast model cars, modelcars, collectable cars, "
+ diecastManu + " diecast"
+ " model, " + metaMake + " diecast cars, diecast " + metaModel +"\">";
System.out.println(fullOutput);
}
}
Кроме того, он также игнорирует:
System.out.println("Please paste model manufacturer.");
diecastManu = sc.next();
System.out.println("Please paste car model (e.g Skyline");
metaModel = sc.next();
Я знаю, что этот вопрос давно и не очень просто, но я не могу придумать лучшего способа, чтобы показать, что происходит.
У вас есть много утверждений if, но никаких утверждений if-if. – Makoto
Будет ли чище менять переключатель if? Я не мог понять, как это сделать. – BenjaminJB
Вы должны проверить документацию для 'Scanner.next()'. http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next(). Ваш вызов 'next()' возвращает только первое слово. Вы также должны попробовать запустить это через отладчик, чтобы увидеть фактические значения, хранящиеся на вашем входе, и какие операторы 'if' будут удалены. – forgivenson